实战架构理解总结

后端服务体系结构
1、层级:api层(worker)、RPC层、服务层(service)、资源层
2、管道:微服务间的链路调用,比如 搜索系统—商品库系统—库存系统
3、插件:旁路系统、消息中心(异步)、dove配置管理、计划任务管理、监控系统、日志系统

CB-S架构和入口

(Client/Browser-Server)

访问相关
外网域名解析DNS、HTTPDNS
CDN,实现静态资源(如图片、视频、Js、Css文件等)加速
通信协议
app端,开启 MAA 后会使用网宿提供的私有协议,另外部分场景下使用 websocket 协议做长连接
web端,HTTP/HTTPS/HTTP2

入口相关
分流:内网DNS智能路由和动态域名路由
反向代理和负载均衡:LVS、Nginx

RPC架构

通信协议

  1. PHP 服务间采用 JmText协议(TCPsocket)通信;
  2. PHP 与 Java 服务间采用 Thrift 协议通信;

服务调度
服务间通信使用基于 Service Mesh 架构思路开发的组件Lark(GO语言开发)

image.png

image.png

api层

处理来自用户的 web 请求,返回给用户是 Html 页面或 Json 数据为主
使用MVC框架,部分有静态化,对变动不频繁的页面会做静态化处理,静态化后的数据会存储在文件或者 Varnish 上

服务层

处理来自 Api 层、消息中心、旁路系统、其他服务的请求
搜索引擎使用Elasticsearch和solr

资源层

涉及 MySQL,数据缓存,静态资源存储等
mysql连接池
mysql冷热数据分离,对数据进行水平拆分,热库中只保留最近一段时间的新插入数据
mysql汇总库,汇总到汇总库中这样便于查询统计数据
redis,使用场景主要有两种:缓存和数据存储

插件的系统

旁路监听,监听数据库表变更、接口调用,发消息给消息中心
消息中心
实现异步的把收到的消息发给订阅者。
使用组件:
消息队列beantalkd(使用生产者和消费者模型)
medispatcher (推送消息给订阅者、报警)
配置管理系统,使用组件Zookeeper(Hadoop的子项目,分布式协调系统)

你可能感兴趣的:(实战架构理解总结)