我们针对服务治理的功能,提供了很多API,可以授权给开发人员或者外部系统使用。
例如单元测试调用,限流配置/开关,动态分组,上下线等都提供了开放API。
JSF HTTP网关
网关是为了方便跨语言通过HTTP+JSON调用JSF服务,而不需要使用JSF的RPC框架。
特性如下:
基于Netty4.0实现HTTP网关,没有使用Servlet容器,轻量高效。
支持服务自动发现
- 一般的HTTP服务,外面为了解决单点问题,都会用域名+VIP等实现高可用,故障转移等;
- 现在网关同时原生接入了JSF的注册中心,知道了服务的提供者信息(JSF协议支持HTTP调用)。
- 服务提供者也不用关系扩容缩容导致服务的IP端口发生变化,网关会自动维护服务列表。
- 服务限流
- 针对方法级+应用进行授权,固定时间只能调用指定次数。
- 同一个方法也只能占用网关内的部分线程
- 结果统一包装
- 对异常等响应进行包装
JSF遇到京东弹性云
京东的JSF服务开发在京东弹性云的研发推广之前完成,自从京东弹性云落地以来,也遇到不少问题。
例如:
- 硬件指标:例如使用JDK获取的Docker的指标有些是物理机的,我们需要特殊处理
- 网络:结合京东的“胖”容器,每个容器其实有实际IP,对外提供服务
- 轻量:提高启动速度
- 开放服务:在容器销毁或者非优雅停机的情况下,提供API进行服务治理
JSF规模
- 接口数:万级
- 服务节点数:百万级
- 接入实例数:十万级
- 框架调用量:每天千亿级别
- 监控数据:每天120亿条数据,1.2T数据量
- HTTP网关:每天百亿级别
总结
- 没有最好,只有最适合!
意思就是不要人云亦云,盲目看大公司用什么,现在什么最新,或者什么性能最好。因为架构不是让你一下子设计出来使用一辈子,好的架构都是慢慢演化而来的。不同的架构会做出不同的技术选型。所以无论什么时候都要结合自己的现状以及未来几年的规划,来进行技术选型。
- It’s just the beginning!
服务化框架的选择只是开始,真正的变革是选择后,公司整体业务和开发的变革。这个大家有空可以看看康威定律。