行业案例:高德服务单元化方案和架构实践
目录
为什么要做单元化
高德单元化的特点
高德单元化实践
服务单元化架构
就近接入实现方案
路由表设计
路由计算
服务端数据驱动的单元化场景
总结
系列阅读
为什么要做单元化
- 单机房资源瓶颈
随着业务体量和服务用户群体的增长,单机房或同城双机房无法支持服务的持续扩容。
- 服务异地容灾
异地容灾已经成为核心服务的标配,有的服务虽然进行了多地多机房部署,但数据还是只在中心机房, 实现真正意义上的异地多活,就需要对服务进行单元化改造。
高德单元化的特点
在做高德单元化项目时,我们首先要考虑的是结合高德的业务特点,看高德的单元化有什么不一样的诉 求,这样就清楚哪些经验和方案是可以直接拿来用的,哪些又是需要我们去解决的。
高德业务和传统的在线交易业务还是不太一样,高德为用户提供以导航为代表的出行服务,很多业务场 景对服务的RT
要求会很高,所以在做单元化方案时,尽可能减少对整体服务
RT
的影响就是我们需要重
点考虑的问题,尽量做到数据离用户近一些。转换到单元化技术层面需要解决两个问题
:
- 用户设备的单元接入需要尽可能的做到就近接入,用户真实地理位置接近哪个单元就接入哪个单元, 如华北用户接入到张北,华南接入到深圳。
- 用户的单元划分最好能与就近接入的单元保持一致,减少单元间的跨单元路由。如用户请求从深圳进 来,用户的单元划分最好就在深圳单元,如果划到张北单元就会造成跨单元路由。
另外一个区别就是高德很多业务是无须登录的,所以我们的单元化方案除了用户
ID
也要支持基于设备 ID。
高德单元化实践
服务的单元化架构改造需要一个至上而下的系统性设计,核心要解决请求路由、单元封闭、数据同步三 方面问题。
请求路由:根据高德业务的特点,我们提供了取模路由和路由表路由两种策略,目前上线应用使用较多 的是路由表路由策略。
单元封闭:得益于集团的基础设施建设,我们使用
vipserver
、
hsf
等服务治理能力保证服务同机房调 用,从而实现单元封闭(hsf unit
模式也是一种可行的方案,但个人认为同机房调用的架构和模式更简洁 且易于维护)
。
数据同步:数据部分使用的是集团
DB
产品提供的
DRC
数据同步。