微服务

58转转的微服务架构

如下图所示:

一、分层,垂直拆分

在网关层面进行用户身份的校验。

在聚合层进行业务逻辑处理。这一块可以根据功能,进行横向的拆分,分为search、trade、info等横向的模块。

在原子层进行 增删改查 等数据库和缓存基础逻辑

二、通信模块

1.用户和微服务网关之间使用 https/http 协议,传输使用 json,使用 REST API。

2.服务器内部之间使用 RPC 协议(数据量小,长连接,数据安全),SCF 和私有协议。

三、微服务控制

1.需要将微服务(主要是网关层、聚合层、原子层三个层面,也许可以加上数据层)的配置信息(host,port,config等信息)存于注册中心,方便进行控制编辑,负载均衡(keepalive,retry)和下游服务发现

四、柔性可用实践

系统降级 =》 数据层降级 =》 柔性可用策略

系统降级:拒绝部分老请求,对新的请求进行响应,使用RPC队列方式;非核心请求丢弃,保留核心请求(核心业务);随机丢弃一定比例的请求

数据层降级:

  • 更新请求:持久化到消息队列,只更新缓存
  • 读请求:读缓存
  • 事后数据补齐:消息队列 -> 持久化到数据库

柔性可用策略:

监控和记录日志,并且能进行报警。微服务监控框架:open-falcon

  • 进程监控:alive
  • 语义监控:模仿用户进行检测返回值是否符合预期。
  • 错误日志监控
  • 数据波动监控:流量的突增突减 ,请求平均耗时和请求异常条数。
  • 机器资源监控:机器资源不足。cpu,内存,磁盘等;


许多人所谓的成熟,不过是被生活磨去了棱角,变得世故而实际了。

那不是成熟,那是精神的早衰和个性的夭亡。

真正的成熟,应当是独特个性的形成,真实自我的发现,精神上的结果和丰收。

—— 周国平《灵魂只能独行》

Posted

in

by

Tags: