Category: 架构

  • 微服务

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