阿里 徐晓斌、桑植讲解
基础架构
基础技术栈
语言:JAVA8
版本控制:Git&Gitlab
构建:Apache Maven 3
基础框架:Spring Boot
Web框架:Spring MVC
HTTP服务器:Tengine(nginx)
通讯协议: HSF
消息框架: MetaQ
统一的发布系统: Aone
区域内架构
WEB层 webApp
服务层 webService
WEB层和服务层由 MQ 和 HSF 分发
缓存层 Tair
数据层 DB、HBase、NoSql
跨区域通讯
通过路由
区域的配置
利用springboot 为每个服务保存单独配置
采用微服务
接口、数据传输对象处理
1.创建单独版本管理
2.由于维护成本高,发布前需要review
区域化部署实践
区域化架构
用户路由表设计
由区域和状态构成,两个用户一个字节(例如:101 region 0 state)
查找用户过程:
If UserId = x, index=x/(1024100002)找到行
byte=Slot[index][x%(1024100002)] 找到字节
RegionInfo=byte [x%2]找到用户
数据一致性保证
日常访问一致性
多地路由表数据一致性
主要通过Tair去维护每个路由表的版本号,来控制一致性
用户路由变更一致性
让用户停写,然后秒级切换
异地容灾一致性
1.原机房的禁写,流量切换灾备机房
2.原机房恢复,DRC数据同步
3.通过时间戳判断DRC同步时间节点和灾害时间节点,来确定是否可以取消禁写
4.切换时也要考虑就近原则(跨境地理问题,国家数据限制同样要考虑)
PPT如下: