当前位置:首页 » 操作系统 » memcached源码安装

memcached源码安装

发布时间: 2023-06-03 12:36:14

A. 黑马程序员linux运维培训怎么样

1、什么是运维工程师?

运维工程师,服务器与系统安全稳定的掌舵者!当一个产品(如Web网站、APP软件、网络游戏等)正式上线后,产品、开发、测试类的工作就正式结束了,接下来的维护和管理工作就会全部移交给运维工程师。

运维工程师的主要工作职责就是负责服务器的架构设计以及云计算平台管理,保障软件的稳定运行。没有开发以及测试类工作复杂且工作解决方案相对固定。更重要的是没有年龄以及学历的限制,随着工作年限和工作经验地增长,也会越老越吃香。

2、运维工程师工作场景

运维学科2019全年所有班级就业率93.5%,平均薪资8.7k起,最高薪资25k* 14薪

三、运维课程

1、第一阶段:Linux运维基础功

运维基础:运维发展史、计算机概述、计算机组成、操作系统学完此阶段可掌握的核心能力:熟练掌握Linux操作系统的安装(CentOS7.6)、配置、基础命令、VIM编辑器、用户管理、权限管理、自有服务、进程检测与控制、阿里云平台管理、开源CMS项目上线部署实战。

Linux操作系统:Linux系统概述、虚拟机、CentOS7.6系统安装,Linux基础命令

Linux下文件管理(上):文件命名规则、目录管理、文件管理、文件复制与剪切、重命名、Linux文件打包与压缩、文件处理命令

Linux下文件管理(下):VIM编辑器介绍、VI与VIM的区别、VIM安装与配置、四种工作模式(命令模式,编辑模式,末行模式,可视化模式)、相关VIM指令、VIM扩展功能、VIM总结

Linux下用户管理:用户和组的相关概念、用户组管理、用户管理、用户密码设置、切换用户、Linux用户管理实战

Linux下权限管理:权限的基本概念、权限在生产环境中的作用、Linux权限类别(rwx)、Linux文件所有者类别(ugo)、普通权限设置(字母+数字)、文件属主与属组设置、高级权限、ACL权限控制、umask

Linux下自有服务+软件包管理:自由服务概述、systemctl管理服务命令、ntp时间同步服务、firewalld防火墙、crond计划任务、设备挂载与解挂、rpm包管理工具

Linux进程检测与控制:进程与程序的概念、进程管理命令(top命令,free命令,df命令,ps命令,netstat命令,kill命令与killall命令)、进程优先级设置

阿里云平台管理与开发CMS项目上线部署实战:云计算平台概述、阿里云平台注册、登录与管理、项目背景、LAMP环境概述、YUM指令、LAMP环境搭建、开源CMS项目上线部署实战

学完此阶段可解决的现实问题:能够根据企业实际项目需求实现服务器部署与架构。

学完此阶段可拥有的市场价值:熟练掌握之后,可以满足市场对初级运维工程师的需求,但是市场就业工资相对较低,还是建议继续学习就业班课程。

2、第二阶段:Linux系统服务篇

Linux高级指令:基础命令回顾、find命令之高级搜索、tree命令、scp文件上传与下载、计划任务crontab + tar实现定时备份、用户管理高级、文件权限管理高级

Linux下软件包管理:软件包管理任务背景、Linux下软件包概述、RPM包管理工具、YUM包管理工具、YUM源配置(公网YUM源,本地YUM源、自建YUM源仓库)、源码安装概述、源码安装三步走、源码安装实战

Linux远程管理服务SSH:SSH任务背景、SSH服务概述,yum源配置,SSH服务安装与配置实战,公私钥概念,SSH免密码登录

Linux数据同步RSYNC:RSYNC任务背景、RSYNC介绍、RSYNC基本语法、本机同步与远程同步、把RSYNC作为系统服务、RSYNC结合INOTIFY实现实时同步、RSYNC托管XINETD

Linux下文件共享服务ftp、NFS、SAMBA:文件共享任务背景、FTP服务介绍、FTP工作模式(主动模式+被动模式)、FTP服务搭建、客户端工具(ftp、lftp使用)、FTP访问控制、NFS服务介绍、NFS服务搭建、配置文件详解、NFS任务背景及解决方案、SAMBA服务介绍、SAMBA服务搭建、配置文件详解、文件共享服务总结

DNS域名管理服务:DNS服务介绍、DNS的作用、DNS服务搭建、正向解析、反向解析、多域搭建、NTP时间服务器、主从DNS架构

源码构建LAMP环境及部署业务应用:LAMP任务背景、Web服务器环境准备、软件编译回顾、编译安装Mysql、编译安装Apache、编译安装php、后期配置、Web应用系统部署实战

Linux下日志管理服务RSYSLOG:日志管理任务背景、查看日志、日志管理服务(RSYSLOG概述,日志列表,日志级别,相关符号,配置文件)、RSYSLOG本地日志管理、RSYSLOG远程日志管理、日志管理应用实践

Linux 磁盘管理:磁盘管理任务背景、磁盘管理概述、fdisk命令详解、Linux分区概述、Linux分区实战、逻辑卷介绍、逻辑卷基本概念(PV、VG、PE、LV)、逻辑卷LVM应用操作实战、RAID介绍、RAID常见级别、软硬RAID、软RAID应用实践

Shell脚本编程Shell概述、变量、Shell流程控制、Shell数组、Shell函数、Shell特殊用法、正则表达式、Shell编程实战

数据库DBA:MySQL概述,MySQL5.7安装,MySQL配置,MySQL基本操作、SQL语句详解、MySQL索引、MySQL备份与还原、MySQL主从复制、MHA高可用架构、MySQL企业级应用实战

学完此阶段课掌握的核心能力:

1、了解Linux系统运行原理,实现Linux服务器的维护与管理;

2、了解Linux系统相关服务,能根据企业需求实现企业运维工作。

学完此阶段可解决的现实问题:能实现企业Linux服务器的日常维护与管理,搭建SSH、文件共享、DNS、Apache等服务、能独立完成系统日志分析、Shell脚本编程、数据库DBA等相关工作。

学完此阶段可拥有的市场价值:熟练学习和掌握后,可满足企业运维的初中级需求。

3、第三阶段:千万级商城系统架构设计

源码构建企业级LNMP架构及电商系统上线部署:千万级商城系统架构设计任务背景、Web项目开发流程、Linux服务器环境准备、LNMP环境概述、MySQL数据库服务搭建、Nginx软件服务搭建、PHP软件服务搭建、Web商城项目部署上线

大型WEB服务软件Nginx部署介绍使用:Nginx软件概述、Nginx平滑升级、nginx.conf配置文件详解、虚拟主机配置、Nginx默认官方模块详解(GZIP压缩,客户端缓存,反向代理,基于IP/用户的访问控制,目录显示)、日志管理、日志轮转、第三方日志管理软件GoAccess、Location区块、URL重写、第三方模块安装与配置、Nginx安全管理、Nginx其他衍生版本(Tengine,OpenResty)

WEB高可用集群架构设计及实现(keepalived):WEB高可用集群架构设计任务背景、单点数据库迁移、HA高可用集群概述、Keepalived软件介绍、Keepalived组成和原理、VRRP协议、安装与配置Keepalived、Nginx服务高可用实践、Keepalived扩展内容(非抢占模式、VIP脑裂、单播模式)

WEB负载均衡服务器集群架构设计及实现LB(Nginx/LVS/HAProxy):WEB负载均衡服务器集群架构设计任务背景、为什么需要LB负载均衡技术、LB负载均衡架构图、负载均衡分类、常见负载均衡实现方式、LB负载均衡环境准备、Nginx负载均衡实现、负载均衡算法、Session共享解决方案、高可用负载实践; LVS概述、LVS工作原理、LVS核心组件、LVS三种工作模式(NAT模式、DR模式、TUN隧道模式)、LVS/NAT原理和特点、LVS/DR原理和特点、LVS/TUN原理和特点、LVS的十种调度算法、LVS/NAT模式部署实践、LVS/DR模式部署实践; HAProxy概述、HAProxy安装与部署、haproxy.cfg配置文件详解、常见问题分析、HAProxy调度算法、HAProxy负载均衡应用实践

MyCAT读写分离:MySQL读写分离任务背景、读写分离的目的、读写分离常见的实现方式、搭建M-S主从复制、代码实现读写分离、MyCAT实现读写分离实战(JDK配置、MyCAT配置文件详解、读写分离实践、高可用实践、分库分表、MyCAT企业级案例实践)

非关系型数据库NoSQL(Memcache/Redis/MongoDB):非关系型数据库任务背景、Web项目访问流程、优化方案、缓存技术引入、memcached介绍、memcached安装与部署、telnet客户端使用、memcached指令详解、memcached tools工具使用、LRU失效机制、PHP memcached扩展安装、Session入memcached、缓存项目的热点数据; Redis介绍、Redis应用场景、Redis源码安装、客户端工具使用、Redis数据结构详解、数据持久化操作(快照+AOF)、企业级案例(主从,安全限制,PHP Redis扩展,Session入Redis);MongoDB任务背景、MongoDB安装和配置、数据结构类型操作CURD、MongoDB安全设置、PHP扩展、桌面管理软件、企业级日志统计实践

JAVA项目架构设计实战(LNTM架构):Java项目任务背景、Tomcat概述、Tomcat安装与部署、Tomcat企业级管理、Host虚拟主机配置、Server Status服务器状态、应用管理、Nginx动静分离、Nginx+Tomcat负载均衡、Maven概述、Maven项目打包、Maven项目部署

存储(NAS/SAN/GlusterFS/Ceph):存储概述、Linux存储分层、存储的分类(DAS,NAS,SAN)、存储类型的分类(文件存储、块存储、对象存储)、SAN的分类、IP-SAN之iscsi实现; 分布式存储、Glusterfs介绍、raid级别回顾、常见卷的模式、Glusterfs集群、环境准备、集群部署、创建glusterfs存储卷、客户端使用、卷的删除、常见卷类型(stripe模式、distributed模式、distributed-replica模式、dispersed模式、distributed-dispersed模式)、其它卷类型、glusterfs分部署存储应用实战; 认识Ceph、Ceph架构原理图、Ceph集群、Ceph集群组件、Ceph集群环境准备、Ceph集群部署实践、RADOS原生数据存取、Ceph文件存储、Ceph块存储、Ceph对象存储、Ceph对象存储+owncloud打造云盘系统、Ceph Dashboard(拓展)

配置自动化(Ansible/SaltStack):自动化运维任务背景、认识ansible、ansible安装与配置、服务器分组、ansible模块(hostname模块,file模块,模块,yum模块,service模块,command和shell模块,scriYAML格式pt模块)、playbook介绍、playbook实例、playbook编排应用、roles介绍、roles的目录结构、roles应用案例; saltstack介绍、saltstack安装与配置、saltstack远程执行命令、grains、pillar、配置管理文件、配置管理目录、配置管理命令、配置管理计划任务、其他命令、salt-ssh使用

企业级监控平台(Zabbix/Prometheus):企业级监控任务背景、监控的目的、主流的开源监控平台、Zabbix概述、Zabbix服务器安装、Zabbix监控本机与远程主机、模板、监控项与应用集、图形、触发器、报警、Zabbix代理、主动监控与被动监控、Zabbix应用部署实战; 认识Prometheus、Prometheus原理架构图、Prometheus监控安装部署、Prometheus监控远程主机、远程MySQL、Grafana介绍、Grafana安装与登录、Prometheus结合Grafana实现Linux系统监控、CPU监控、MySQL监控等等、Grafana报警系统实践

企业级日志分析(ELK/Kafka):ELK任务背景、ELK概述、elasticsearch部署、elasticsearch基础概念、elaticsearch基础API操作、ES查询语句、elasticsearch-head、logstash简介、logstash部署、日志采集、采集messages日志、采集多日志源、kibana介绍、kibana部署、kibana汉化、通过kibana查看集群信息、通过kibana查看logstash收集的日志索引、通过kibana做可视化图形、filebeat介绍、filebeat收集日志、filebeat传输给logstash、filebeat收集nginx日志、filebeat日志过滤

CI/CD(Git、Gitlab、Jenkins):CI/CD任务背景、版本控制概念、Git安装、Git身份设置、Git创建本地仓库、Git暂存区、Git版本控制、Git分支管理、扩展:Windows版Git; Github概述、GitHub注册、创建项目、远程仓库、免密push、分支、多人协作; GitLab介绍、GitLab下载、安装与配置、GitLab配置、仓库管理、持续集成(CI)、持续交付(CD)、蓝绿部署、滚动更新、灰度发布

运维安全(SSL与CA认证/防火墙/ VPN/JumpServer与Teleport跳板机):运维安全任务背景、运维安全概述、硬盘分区加密(扩展)、对称加密、非对称加密、数字签名、SSL与CA认证、SSL介绍、CA认证介绍、https应用实践; 防火墙概述、iptables的应用、iptables防火墙结构、iptables基本语法、iptables四表五链、企业级防火墙规则设置、firewalld包过滤、firewalld与iptables的区别、firewalld防火墙规则设置、firewall-config图形模式; VPN任务背景、隧道介绍、net-to-net隧道通讯、VPN介绍、IPSec协议、libreswan实现net-to-netVPN、三网络VPN互联、roadwarrior VPN(libreswan实现点对网VPN,openvpn实现点对网vpn,使用pptpd实现VPN),PAM认证,LDAP,开源堡垒机jumpserver,轻量级开源堡垒机teleport(拓展)

学完此阶段可掌握的核心能力:

1、 具备Linux服务器架构设计能力,保证应用架构合理可控;

2、具备监控检查系统软硬件运行状态,保证系统安全稳定运行的能力;

3、具备CI/CD持续集成/持续支付能力;

4、具备配置自动化以及日志分析能力;

5、具备解决复杂问题和技术难点的能力。

学完此阶段可解决的现实问题:

1、掌握Java、PHP服务器架构能力;

2、能够独立搭建企业级高可用服务器(集群、高可用、负载均衡、缓存、存储);

3、掌握阿里云/华为云产品实战;

4、能使用Zabbix/Prometheus搭建企业级监控;

5、能够熟练掌握CI/CD持续集成/持续支付工具;

6、能够使用Ansible/SaltStack实现运维自动化;

7、能使用ELK实现企业级日志分析;

8、能够掌握常见运维安全防护手段。

学完此阶段可拥有的市场价值:熟练掌握和学习后,可满足Linux运维行业中高级需求。

4、第四阶段:Linux云计算运维

KVM虚拟化:KVM任务背景、计算机工作原理、虚拟化概述与分类、KVM环境准备、KVM安装、使用KVM安装虚拟机、KVM基础管理命令、KVM配置文件、KVM克隆、KVM网络管理、快照、设备管理、存储池管理、磁盘镜像管理、虚拟机快速创建脚本

公有云运维(阿里云[ECS/RDS/SLB/CDN/OSS/NFS]):公有云任务背景、阿里云概述、VPC专有网络、阿里云安全组、云服务器ECS、自定义镜像、阿里云SLB、阿里云RDS、阿里云存储(NAS与OSS)、CDN、域名与域名解析、SSL证书、数据传输DTS、云监控、DDOS高防、容器服务、公有云企业级案例应用实践

私有云运维之OpenStack平台:私有云任务背景、OpenStack概述、OpenStack组件及其作用(Compute 计算服务、Networking 网络服务、Object Storage 对象存储、Block Storage 块存储服务、Identity 身份认证、Image Service 镜像服务、Dashboard UI页面、Metering 测量服务、Orchestration 编排部署、Database Service 云数据库)、OpenStack自动部署、OpenStack手工部署、OpenStack云平台应用实践

Docker容器技术:Docker容器技术任务背景、PAAS平台介绍、认识容器、Docker介绍、Docker内核技术(NameSpace,Control Group,LXC与docker区别)、Docker环境准备、Docker软件安装、Docker Daemon管理、镜像、容器、仓库、Docker存储驱动、Docker应用实践、Dockerfile概述、使用Dockerfile构建镜像、单宿主机容器互联方式、Docker网络、Docker的Web管理平台、Docker三剑客(Docker machine、Docker compose、Docker swarm)、Docker容器应用部署实践

Kubernetes(K8S)容器编排工具:Kubernetes(K8S)容器编排任务背景、认识容器编排、Kubernetes概述、Kubernetes架构、集群部署方式、Kubeadm部署Kubernetes集群、集群与节点信息、节点标签、namespace命名空间、工作负载(workloads)、pod概述、pod分类、pod的YAML格式、pod资源限制、pod调度、pod生命周期、pod控制器、service、ingress controller、kubernetes存储卷、ceph集群部署、ConfigMap、Secret、PV与PVC、API网关 kong、包管理方案 helm2、存储解决方案 GlusterFS、服务网格 istio、监控解决方案 heapster、应用实践 gitlab-ce、应用实践 jenkins、应用实践 kafka、应用实践 zookeeper应用实践 配置中心Apollo

综合案例:Docker+K8S企业级项目应用实践

学完此阶段可掌握的核心能力:

1、熟练掌握虚拟化技术;

2、掌握公有云与私有云架构实战;

3、熟练使用容器与容器编排工具;

4、熟练掌握企业级云计算技术应用实践。

学完此阶段可解决的现实问题:

1、能够使用KVM实现虚拟化;

2、能够掌握公有云与私有云服务器架构实战;

3、能够熟练使用Docker容器;

4、能够熟练使用Kubernetes(K8S)容器编排工具;

5、能够熟练掌握Docker+Kubernetes(K8S)项目架构设计

学完此阶段可拥有的市场价值:熟练掌握和学习后,可满足Linux云计算架构工程师的高级需求。

5、第五阶段:python CMDB运维开发(DevOps)

HTML5:HTML简介、HTML标签详解、字符编码的奥秘、HTML5新特性与常用标签

CSS3:CSS简介、CSS的引入方式、CSS基本选择器、CSS属性、盒子模型、CSS浮动、CSS3新特性与常用属性、CSS应用案例

Bootstrap:Bootstrap环境搭建、全局样式、网页排版、表单、图片及辅助类、网页布局、Bootstrap组件、CMDB后台布局实战

JavaScript/Ajax/jQuery:JavaScript简介、Javascipt语法基础、BOM模型、DOM模型、Ajax概述、Ajax中的get与post请求、Ajax案例、jQuery框架概述、jQuery选择器、jQuery事件、jQuery与Ajax、JavaScript应用实践

Python基础:Python概述、Python环境部署、变量、标识符和关键字、输入和输出、数据类型转换、条件控制语句和循环语句、容器类型、函数、文件操作

Python高级:面向对象、异常处理、模块和包、Python与MySQL应用实践

Django框架:Django框架介绍、Django模型、ORM及数据库操作、视图及模板、Django中间件

综合项目:Python+Django实现CMDB企业自动化运维平台

学完此阶段可掌握的核心能力:

1、掌握Web前端开发相关技术如HTML5/CSS3/JavaScript;

2、掌握Python运维相关模块;

3、掌握Python Django框架;

4、具备一定的Python运维开发能力。

学完此阶段可解决的现实问题:

1、具备一定的编程思维,为未来系统架构师铺路搭桥;

2、能够熟练掌握Python运维相关模块实现运维管理;

3、能够使用Python+Django开发企业自动化运维平台。

学完此阶段可拥有的市场价值:熟练掌握和学习后,可满足Linux运维行业的高级需求。

B. php 怎么配置memcached

分为linux和windows系统下:

windows下:

1、首先下载memcache的windows版本,将下载下来的文件解压出来后会看见一个名为memcached.exe的可执行程序

2、将该文件放到指定目录,如D盘

3、安装:

开始->运行->cmd打开命令窗口

进入D盘:cd d:

安装memcache服务:

在命令窗口输入:

memacahed.exe -d install

等待命令执行完成后,就可以在服务列表中看到memcached服务

4、启动memcache服务:

memcached.exe -d start

5、可以通过以下命令来查看memcache服务是否启动成功:

wmic process get description, executablepath | findstr memcached.exe

可以将memcached.exe的路径放入到系统环境变量中,方便使用。

查看memcache运行状态:

在命令窗口输入:

telnet 127.0.0.1 11211

链接到memcache上,输入stats就可以查看到当前memcache的状态了;

linux下:

1.下载memcache源码

http://www.memcached.org/

2.解压并进入目录

./configure --prefix=/usr/local/memcache
make
make test
sudo make install

3.启动memcache

memcache -d start -u root

验证memcache是否正确安装并启动

netstat -tap | grep memcached

4.安装memcache扩展库

下载memcache扩展

进入到memcache扩展文件

./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config
make
make install

修改php.ini文件 增加

extension=memcache.so

安装memcached扩展库

下载memcached扩展

memcached扩展需要libMemcached库的支持,所有在安装memcached扩展库之前要确认系统已经安装了libmemcached

安装libmemcached

./configure --prefix=/usr/local/memcache
make
make install

libmemcached安装完成后,就可以安装memcached扩展库

./configure --with-libmemcached-dir=/usr/local/memcached/ --with-php-config=/usr/local/php/bin/php-config
make
make install

同样修改php.ini配置文件,增加

extension=memcached.so

C. 如何引用第三方 resty 库

和大部分知名开源软件诞生在欧美国家不同,OpenResty自身和依赖的主要组件都是金砖国家的开发者发明的,这点还挺有意思。

Nginx是俄罗斯人发明的,Lua是巴西几个教授发明的,中国人章亦春把LuaJITVM嵌入到Nginx中,实现了OpenResty这个高性能服务端解决方案。

通过OpenResty,你可以把nginx的各种功能进行自由拼接,更重要的是,开发门槛并不高,这一切都是用强大轻巧的Lua语言来操控。

它主要的使用场景主要是:

在Lua中揉和和处理各种不同的nginx上游输出(Proxy,Postgres,Redis,Memcached等)
在请求真正到达上游服务之前,Lua可以随心所欲的做复杂的访问控制和安全检测
随心所欲的操控响应头里面的信息
从外部存储服务(比如Redis,Memcached,MySQL,Postgres)中获取后端信息,并用这些信息来实时选择哪一个后端来完成业务访问
在内容handler中随意编写复杂的Web应用,使用同步但依然非阻塞的方式,访问后端数据库和其他存储
在rewrite阶段,通过Lua完成非常复杂的URLdispatch
用Lua可以为nginx子请求和任意location,实现高级缓存机制

组织OpenResty技术大会之前,我一直认为自己是一个孤独的OpenResty使用者,觉得自己在使用一个冷门的技术。

虽然大家都听说过OpenResty或者ngx_lua,但感觉用在生产环境中使用的却少之又少,除了几个CDN公司外,好像没有听说过哪家知名互联网公司在使用。而CDN行业之所以使用,很多是受到cloudflare技术栈的影响,OpenResty的作者也在国外这家CDN公司。

但办完这个大会,我发现使用者真的挺多,奇虎360的所有服务端团队都在使用,京东、网络、魅族、知乎、优酷、新浪这些互联网公司都在使用。有用来写WAF、有做CDN调度、有做广告系统、消息推送系统,还有像我们部门一样,用作APIserver的。有些还用在非常关键的业务上,比如开涛在高可用架构分享的京东商品详情页,是我知道的ngx_lua最大规模的应用。

2.奇虎企业安全服务端技术选型的标准

先说下3年多前做架构选型的时候,我为什么会选择OpenResty?

其实架构如何设计并不重要,因为每家公司,每个团队,他们的公司文化和技术背景各不相同,生搬硬套会适得其反。重要的是当初为什么这么选择,中途为什么调整。

我们的产品要求单机上面,服务端提供高性能的API接口,QPS至少过万,未来需要支撑到10万。我们并没有急于去使用PHP、Python或者其他的语言来实现功能,而是先勾勒出一个理想化的技术模型。

这个模型应该具备:

非阻塞的访问网络IO。在连接MySQL、Redis和发起HTTP请求时,工作进程不能傻傻的等待网络IO的返回,而是需要支持事件驱动,用协程的方式让CPU资源更有效的去处理其他请求。很多语言并不具备这样的能力和周边库。

有完备的缓存机制。不仅需要支持Redis、Memcached等外部缓存,也应该在自己的进程内有缓存系统。我们希望大部分的请求都能在一个进程中得到数据并返回,这样是最高效的方法,一旦有了网络IO和进程间的交互,性能就会受到很大影响。

同步的写代码逻辑,不要让开发者感知到回调和异步。这个也很重要,程序员也是人,代码应该更符合人的思维习惯,显式的回调和异步关键字,会打断思路,也给调试带来困难。

最好是站在巨人肩上,基于成熟的技术上搭建。采用一门全新诞生的语言和技术,需要经历语言自身发展期频繁调整的阵痛,还可能站错队。

不仅支持Linux平台,还需要支持Windows平台,这个是我们产品很特别的需求,很多中小企业用户还是习惯Windows的操作,不具备Linux的维护能力。

基于以上几点的考虑,考察了当时的一些方案,选择了OpenResty。

首先,它最大的特点就是用同步的代码逻辑实现非阻塞的调用,其次它有单进程内的LRUcache和进程间的shareDICTcache,而且它是揉合nginx和LuaJIT而产生的。而且nginx有Windows版本,虽然有非常多的限制,但这些限制都是可以解决的,nginx官方Windows版本中不支持的特性,我们开源出来的版本都解决了。

第一次看到这样的方案,我觉得它肯定会颠覆高性能服务端的开发。为什么呢?在我之前的公司里,每天会有近百亿次的查询请求,而服务器只用了十台。

我们采用了nginxC模块+内置在nginx中的K-V数据库(自己开发的),来实现所有的业务逻辑,达到这个目标。听上去很简单,但是过程非常艰辛,两三个十几年工作经验的大牛做了一年多才稳定下来。绝大部分开发能力不足,只能望尘莫及。而且后续的调试和维护,也会花费不少精力。

但是OpenResty的出现改变了这一切,OpenResty非常的pythonic,适合人类的正常思维。新手经过一两个月的学习,做出来的API,就可以达到nginxC模块的性能,而且代码量大大减少,也方便调试。

3.以奇虎和新浪为例,如何在项目中引入新技术

技术选型只是第一步,如何才能在一个产品或者项目中引入OpenResty这个新的技术呢?我拿奇虎企业安全和新浪移动这两家公司真实发生的案例给大家看看。我和新浪移动的周晶,都是在一个有成熟产品的部门,用一两个人的力量,把一个新技术,替换掉了原有的技术架构。但由于企业产品和个人产品的不同,方法有很大的不一样。

先说我所在奇虎企业安全。我在2012年初加入这个部门,当时产品主打免费,目标用户是小企业。所以架构设计上面,只考虑了几十点、几百点的终端请求,使用了非常强绑定的Windows平台技术,而且倾向于不用开源软件,自己新做一个更适合自己的框架。包括自己用C++开发的Webserver,自己写的PHP路由和框架,数据存储在sqlite里面。

我帮忙修改了两个月PHP的bug,看明白了技术架构的思路之后,就去新开的一个产品线了。这是一个实验性的产品,主要面对央企和专用网,一个网络中有上百万的终端。

刚开始没有什么人关注,我就直接采用了Linux+OpenResty+Redis+Postgres的开源组件,性能测试甩之前的N条街。后面这个实验性的产品,和之前的产品,合并为一个产品,技术上面就割裂为两套架构。老功能用老架构,新功能用新架构。

随着越来越多大用户的增加,原有的技术架构开始捉襟见肘,技术债务越积压越多。随着用户的抱怨,sqlite被抛弃,全面换成Postgres。但对于自己开发的框架还是有些敝帚自珍。

期间通过对比测试、OpenResty培训还有多次用户性能问题排查,让开发同学们都知道这门技术的优势。快被加班压垮的开发同学,逐渐开始选择使用OpenResty而不是自研的框架,来进行新功能的开发,以及旧功能的迁移,来避免加班。

在产品重构的时候,之前自研的服务端框架被完全抛弃,服务端开发的同学从8、9个人减少到3个人。在新技术的引入过程中,我们没有采用强制的举措,因为企业产品需要稳定,用户处部署的版本更新很慢。

而新浪移动周晶的实践,对大家更有参考意义。新浪移动最开始是基于Apache,用PHP来处理用户请求。Apache是同步多进程模型,在并发请求不多的情况下没有问题。

但是总是会有突发新闻,比如马航失联、文章出轨等,突发的高流量把后台压垮了几次。而且可以预见世界杯的流量也会很大,所以周晶花几个月时间,用nginx替换了Apache,使用nginx的fast_cgi_cache,QPS提升了一个数量级。

新浪移动后台的接口都是使用PHP来实现的,在高并发下有些力不从心。而nginx简单的缓存虽然能满足性能,但不能满足业务精细化和数据一致性的要求,需要找PHP之外的解决方案,前提是让PHP的开发能够舒适的使用。node.js的回调地狱、Go的调试不方便,都是一个阻碍。

他们最后选择了OpenResty,而且基于OpenResty开源了一个Web框架Vanilla(香草),模仿了Yaf的使用习惯,让PHP的开发更容易接受和上手。Vanilla已经在新浪移动开始使用,一些核心业务,比如高清图和体育直播,正在向这个框架迁移中。

4.入门痛点,以及学习的正确方法

我和周晶的入门,都是自己摸着石头过河。当时除了Python社区“大妈”的那篇使用文章外,找不到其他的资料。

奇虎和新浪都用OpenResty成功替换了之前的技术,但问题还是挺明显,就是大家都认为自己是孤独的使用者,同事中基本没有人认同。在关键和支撑业务上,使用OpenResty有些不放心,都会在边缘业务上先做尝试和验证。

虽然OpenResty的性能做的很棒,比肩或者超过其他所有的高性能解决方案,但是担心没有学习资料、担心招不到人、担心没人交流,可能还担心作者章亦春哪天撂挑子不干了,这个项目就黄了。

高可用架构群里的各位都是架构师,是技术决策者,在引入一门新技术的时候,肯定会考虑到这些风险。比如小米科技马利超在高可用架构的分享,他们在抢购系统中曾经使用过ngx_lua,虽然性能满足需求,但是团队里面熟悉的人少,最后还是改成了Go语言实现。

如何解决这些担忧?社区是有过思考和讨论的,我们放在分享最后讲。先从一个尝试使用这门技术的开发者的角度看,OpenResty不少基础工作没有完善,友好程度不够:

只能从源码安装,没有apt-get、brew等软件仓库安装方法;安装第三方库没有PIP、NPM之类的包管理工具,需要去先谷歌,然后拷贝代码文件到指定的目录下,才能require使用。

代码编写需要修改nginx.conf和对应的lua代码,即使是helloworld也是如此。当然你可以把代码写在nginx的配置文件里面,但是生产环境肯定是要分离的。这种编写代码的方式,不像是一个编程语言,和常规的编程方式不同。

有独特的执行阶段概念,因为OpenResty是基于nginx的,所以也继承它的这种概念。你的代码逻辑,可能需要放在不同的阶段里面运行,才能获取你想要的预期。而这些阶段间信息如何传递,以及哪些API不能在某些阶段使用,就会经常拦住新手。

遇到问题只有邮件列表这一种方式来沟通,而邮件列表是被墙的。文档也只有英文版本,导致很多新手的问题无法被解决。

没有系统学习OpenResty的手段,大都是业务需要实现什么功能,就去文档和API里面去找。至于方式对不对,能不能优化,就不知道了。

D. libevent 支持udp吗

1、下载libevent源码。
2、用VC编译,一般编译成静态的。
3、在项目中配置libevent库。
4、引用。 你可以按着以上步骤来。应该没问题。

E. CentOS7下FreeSwitch1.8源码安装过程完整记录

1、yum 安装相关的依赖包

yum install -y git gcc-c++ wget alsa-lib-devel autoconf automake bison broadvoice-devel bzip2 curl-devel db-devel e2fsprogs-devel flite-devel g722_1-devel gdbm-devel gnutls-devel ilbc2-devel ldns-devel libcodec2-devel libcurl-devel libedit-devel libidn-devel libjpeg-devel libmemcached-devel libogg-devel libsilk-devel libsndfile-devel libtiff-devel libtheora-devel libtool libvorbis-devel libxml2-devel lua-devel lzo-devel mongo-c-driver-devel ncurses-devel net-snmp-devel openssl-devel opus-devel pcre-devel perl perl-ExtUtils-Embed pkgconfig portaudio-devel postgresql-devel python26-devel python-devel soundtouch-devel speex-devel sqlite-devel unbound-devel unixODBC-devel libuuid-devel which yasm zlib-devel

2、安装 mod_shout 模块以支持 mp3 格式

yum install -y libshout-devel lame-devel libmpg123-devel

wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz

tar -zxvf lame-3.99.5.tar.gz

cd lame-3.99.5

./configure --enable-static --enable-shared

make

make install

vi /etc/ld.so.conf

#换行加入:/usr/local/lib

#保存退出 :wq

ldconfig

3、安装 cmake

yum remove cmake

wget https://cmake.org/files/v3.14/cmake-3.14.0.tar.gz

tar vzxf cmake-3.14.0.tar.gz

cd cmake-3.14.0

./configure

make

make install

4、 安装 libks

yum install libatomic

git clone https://github.com/signalwire/libks.git

cd libks

cmake .

make

make install

5、安装 signalwire-c

git clone https://github.com/signalwire/signalwire-c.git

cd signalwire-c/

cmake .

make

make install

ln -sf

/usr/local/lib64/pkgconfig/signalwire_client.pc

/usr/lib64/pkgconfig/signalwire_client.pc

6、下载并安装 freeswitch1.8

如下 git 为国内址,速度较快,也可以从官方下载源码

git clone -b v1.8 https://git.oschina.net/nwaycn/freeswitch.git

./bootstrap.sh -j

./configure --enable-portable-binary

--prefix=/usr/local/freeswitch

--with-gnu-ld --with-python --with-openssl

--enable-core-odbc-support --enable-zrtp

--enable-libmp3lame

make

make -j install

如下安装语音文件,用时会较长

make -j cd-sounds-install

make -j cd-moh-install

7、安装后的一些操作

设置全局命令软连接

ln -sf /usr/local/freeswitch/bin/freeswitch /usr/bin/

ln -sf /usr/local/freeswitch/bin/fs_cli /usr/bin/

禁用 freeswitch 上 ipv6

mv external-ipv6.xml external-ipv6.xml.inactive

mv internal-ipv6.xml internal-ipv6.xml.inactive

8、启动 freeswitch

freeswitch -nc #后台启动

freeswitch 常用命令

#列出 internal SIP Profile 的状态

sofia status profile internal

#列出某个 Profile 上所有已注册用户

sofia status profile internal reg

#过滤某些符合条件

sofia status profile internal reg 1000

sofia status profile internal user 1000

#列出网关状态

sofia status gateway gw1

#以上命令都可以将 status 用 xmlstatus 来代替,以列出 XML 格式的状态,这样比较容易用

于其他程序解析

#启动、停止、重启某个 Profile 的命令

sofia profile internal start #启动

sofia profile internal stop #停止

sofia profile internal restart #重启

#有时候修改了某个 Profile 的某个参数,不需要重启(重启是影响通话的),可以使用下列

命令让 FreeSWITCH 重读 sofia 的配置

#注意并不是所有的参数都能生效

sofia profile internal rescan

#添加了一个新的 gateway 以后,也可以使用 rescan 指令读取

sofia profile external rescan

#如果是修改了一个网关,则可以先删除该网关,再 rescan

sofia profile external killgw gw1

sofia profile external rescan

#下列命令可以指定某个网关立即向外注册或注销

sofia profile external register gw1

sofia profile external unregister

#开启该 Profile 的 SIP 跟踪功能抓 SIP 包

sofia profile internal siptrace on

#有时候,希望将已经注册的用户清理掉,可以使用如下命令,注意此命令只是临时清理,

客户端重新注册的话还是可以注册成功的

sofia profile internal flush_inbound_reg [email protected]

#也可以根据 call-id 来清理

sofia profile internal reg 1000 #通过此命令查找到 call-id 的值

sofia profile flush_inbound_reg zsfsdfhdfgdfsdfsdfsdfsdf #清除 call-id=zsfsdfhdfgdfsdfsdfsdfsdf 的用户

热点内容
怎么用服务器的ip做内网穿透 发布:2024-04-28 19:28:52 浏览:925
常用的单向哈希算法有 发布:2024-04-28 19:16:04 浏览:116
牛贝微信淘客源码 发布:2024-04-28 19:09:16 浏览:33
传奇装备强化脚本 发布:2024-04-28 18:34:29 浏览:328
QQ如何撤销以储存的密码 发布:2024-04-28 18:32:13 浏览:321
ttsandroid中文 发布:2024-04-28 18:30:38 浏览:766
修改密码后为什么连接不了 发布:2024-04-28 18:16:48 浏览:743
cfm安卓转苹果在哪个买 发布:2024-04-28 18:07:15 浏览:161
编译器错误都是什么意思 发布:2024-04-28 17:31:30 浏览:74
服务器不能复制粘贴到本机是怎么回事 发布:2024-04-28 17:24:50 浏览:15