58转转的微服务架构
如下图所示:
一、分层,垂直拆分
在网关层面进行用户身份的校验。
在聚合层进行业务逻辑处理。这一块可以根据功能,进行横向的拆分,分为search、trade、info等横向的模块。
在原子层进行 增删改查 等数据库和缓存基础逻辑
二、通信模块
1.用户和微服务网关之间使用 https/http 协议,传输使用 json,使用 REST API。
2.服务器内部之间使用 RPC 协议(数据量小,长连接,数据安全),SCF 和私有协议。
三、微服务控制
1.需要将微服务(主要是网关层、聚合层、原子层三个层面,也许可以加上数据层)的配置信息(host,port,config等信息)存于注册中心,方便进行控制编辑,负载均衡(keepalive,retry)和下游服务发现
四、柔性可用实践
系统降级 =》 数据层降级 =》 柔性可用策略
系统降级:拒绝部分老请求,对新的请求进行响应,使用RPC队列方式;非核心请求丢弃,保留核心请求(核心业务);随机丢弃一定比例的请求
数据层降级:
- 更新请求:持久化到消息队列,只更新缓存
- 读请求:读缓存
- 事后数据补齐:消息队列 -> 持久化到数据库
柔性可用策略:
监控和记录日志,并且能进行报警。微服务监控框架:open-falcon
- 进程监控:alive
- 语义监控:模仿用户进行检测返回值是否符合预期。
- 错误日志监控
- 数据波动监控:流量的突增突减 ,请求平均耗时和请求异常条数。
- 机器资源监控:机器资源不足。cpu,内存,磁盘等;
许多人所谓的成熟,不过是被生活磨去了棱角,变得世故而实际了。
那不是成熟,那是精神的早衰和个性的夭亡。
真正的成熟,应当是独特个性的形成,真实自我的发现,精神上的结果和丰收。
—— 周国平《灵魂只能独行》