[分享会] 微服务框架设计 (基于Swoole)
框架三要素
1. Service 通信
2. 服务管理
3. 开发组件
为什么需要服务
1.自治性
2.可组合
3.异构性
2.弹性扩展
-实现方式-
共享库
1.二进制文件/Composer包
2.优点:实现简单、使用方便
3.缺点:隔离性差、部署升级麻烦
REST
1.解决了隔离性和部署问题
2.优点:简单通用
3.缺点:HTTP 不支持主动推送、TCP开销多、长连接相关支持差
-服务设计-
TCP Server/Client
1.服务名+接口名+参数+环境信息
2.服务提供方(接收 socket 消息,执行方法,发送数据)
3.服务调用方(连接服务,指定格式向服务发网络请求,接收数据)
数据封包、解包由 Swoole 根据配置在底层解析,应用获取完整数据。
-服务治理-
数据中心
1.Consul agent 集群
2.支持 DNS 和 HTTP API 动态配置管理
服务发现/负载均衡/心跳检测
1.服务启动时(onStart)注册到 Consul
2.服务停止时(onShutdown)从 consul 清除
3.数据中心收到配置变更推送到调用方
4.客户端实现轮询负载均衡机制
5.心跳检测进程检测服务状态,动态上下线
进程调度
1.Supervisor 自启动 Service 进程
2.断电重启
开发组件
swlib/swpod Swoole协程PDO组件
symfony/console 可编程命令行组件
symfony/routing 路由组件
symfony/dotenv 配置解析组件
symfony/event-dispatcher 事件调度组件
其余
服务监控统计