SpringCloud 网飞系 转换阿里系1

前言:由于目前网飞系的停更,国内阿里系微服务生态的大火,在这次公司级的微服务选型我们选择了springcloud alibaba生态。结合原有netflix的架构做一个本地预研。

目前预研进度:

  1.只保留原有组件库下的common、log、restful(swagger3,exception fallback)、feign(含各个微服务的feignClient)与 netflix相关的及数据库缓存等解耦先不引入后续基础框架成型后一次引入。本次我们重点关注放在分布式注册中心、配置中心及服务间的调用。

  2.注册中心由Eureka 配置中心由apollo 替换成alibaba-nacos

  3.路由网关由zuul-gateway 替换成spring自己的springcloud-gateway

  4.服务间的调用沿用feign+ribbon,相对alibaba-dubbo的上手复杂度及性价比,综合考虑团队及业务体量,仍然选用前者。

  5.微服务的高可用性主角担当(限流与熔断)将hystrix替换成alibaba-sentinel 。满眼都是sentinel的优点。方法级的细颗粒度控制、搭配直观的控制平台、极易可读api、实时查看实时修改的规则。相对hystrix简单粗暴的针对一个微服务做信号量或线程数的配置。前者显得更加的人性化。值得一提,生产环境下的sentinel使用必须做到配置规则持久化这是一个大前提。

  6.未完待续:既然决定了全面拥抱阿里巴巴生态,当然不能放过一些已有的优秀组件。

  服务级:分布式事务seata、任务调度服务Alibaba Cloud SchedulerX、消息中间件rocketmq的封装

  业务级:Alibaba Cloud OSS: 阿里云对象存储服务、Alibaba Cloud SMS: 覆盖全球的短信服务(ps啥时候把自己的支付业务也集成开源下 免得我们自己抽离)

遇到的坑:

  1.1 Nacos作为注册中心,swagger2升级3中间遇到的问题

  2.1 Nacos部署 服务注册 配置中心引用

  3.1 路由部署 gateway的各个服务配置(需要在同一个命名空间)

  4.1 feign ribbon的配置及优化

  5.1 sentinel部署 资源的简单使用

  5.2 sentinel持久化到nacos

  5.3 sentinel与nacos的双向同步改造

  5.4 对feignClient资源的sentinel使用

  5.5 sentinel异常统一拦截处理(不再增加冗余的fallbackHandler和blockHandler)只要声明@SentinelResource即可

  6 未完待续

上一篇:微信支付JsAPI


下一篇:如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源