服务化框架技术选型实践

图片描述

图片描述

图片描述

我们针对服务治理的功能,提供了很多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!

服务化框架的选择只是开始,真正的变革是选择后,公司整体业务和开发的变革。这个大家有空可以看看康威定律。