企业级基础框架搭建-前期准备

主流框架调研

主流微服框架

sofa

开源地址:https://github.com/alipay/sofa-boot

开源公司:蚂蚁金服

框架简介:sofa是一系列基础组件统称,底层sofa-boot是以Spring Boot研发,提供健康检查、日志隔离、类隔离等能力;sofa-rpc高可扩展性、高性能、生产级的 Java RPC 框架,提供了丰富的微服务治理方案;sofa-tracer分布式系统调用跟踪的组件,透视化网络调用;sofa-mosn Service Mesh 基础架构提供安全、快速、可靠、智能的服务间通讯等一些基础组件

dubbo

开源地址:https://github.com/apache/incubator-dubbo

开源公司:阿里巴巴

框架简介:Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

spring cloud

开源地址:https://github.com/spring-cloud

开源公司:主要有netflix,阿里巴巴等

框架简介:Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。主要有netflix提供了注册中心eureka,熔断hystrix、网关zuul、ribbon等,现在eureka和zuul已经处于维护期;现在比较流行的是alibaba提供的组件,包含Sentinel服务降级,Nacos服务注册配置等一些组件

ServiceComb

开源地址:https://github.com/apache/servicecomb-java-chassis

开源公司:华为

框架简介:ServiceComb是以java底座为基础,包括一站式的服务注册、服务治理、动态配置功能,具备服务化契约增强、多语言SDK支持、多通信协议支持等优势特性, 并提供SAGA数据最终一致性方案解决微服务架构。之前是纯java写的框架,为了迎合主流框架做了springboot和springcloud的融合,也因此框架的分层结构比较明显,但是扩展比较不方便。

主流微服务框架对比分析

框架 Sofa dubbo SpringCloud ServiceComb
开源公司 蚂蚁金服 阿里巴巴 Netflix、Alibaba等 华为
开发框架 spring boot Spring Spring Cloud java
服务调用方式 RPC、REST RPC REST REST
注册中心 ZK、Nacos ZK、redis eureka、ZK、Nacos servicecomb-service-center
特有组件 sofaRpc、sofamesh rpc eureka、gateway、Nacos、Sentinel等 saga、service-center
优势 springboot增强、丰富了行业经验、基础组件全家桶,强大社区 轻量级、智能容错 提供各种优秀的组件 框架分层结构明显、网路编程经验丰富、性能优秀
劣势 只开源了部分组件、其它组件需要收费 少量的组件,需要扩展 没有持续的开发阶段,到一定阶段就到维护期 以java为底座,开发起来比较重

微服务基于业务的可扩展性

框架的定位

目的:搭建一个带有自己企业特性的框架,符合微服务理念、能够快速入手开发,而且能迎合当前主流框架,能和不同的框架做适配;基础组件可以用当前比较活跃的基础组件;能够根据业务的调整,框架最小改造化。

标准:服务粒度小,可独立部署扩展、独立开发和演化、独立团队和自治

开发:能够快速上手,对于有springboot基础的人低门槛

框架的拆分和组合

1、对不同规模的项目做不同的组合,比如做一个门户网站,只需要简单的一两个微服务,此时的网站规模小,用不到数据治理;对应规模比较大的项目的,要考虑容错、服务注册、api治理、网关、监控、日志链路等,需要做到不强绑定。

2、对服务的伸缩性,每个微服务都可以横向和纵向上扩展,每个服务可以按照硬件资源需求独立扩容和升级。

版本管理

1、对所有第三方依赖和自研的基础组件版本进行统一管理,便于依赖版本统计和版本修复和升级;

2、版本定义规则,按照统一规则定义版本[主版本号].[次版本号].[修订号]。


微服务架构设计

整体架构设计

1、参考华为的ServiceComb不同结构分层:参考http://servicecomb.apache.org/cn/users/,不同的层次之间可以灵活组合:

  • 编程模型:provider-xxx,提供不同的编程模型,例如rpc和mvc;

  • 通讯模型:transport-xxx,基于http、私有通讯协议、web容器开发;

  • 运行模型:handler-xxx,服务治理相关的功能,例如隔离、熔断、容错、日志链路等功能;

  • 基础增强模型:base-xxx,boot公共增强。例如健康检查、日志隔离等,类似用sofa-boot,和通用机制管理,类似sofa-common-tools;

2、底层基于springboot作为基础框架做开发,sofa以boot为基础开发,spring cloud也是也boot做为基础框架;便于扩展和迎合主流框架演化;

3、便于对接一些开源组件注册中心、网关、链路、日志、rpc,mesh架构等;

4、支持容器化部署k8s+docker。

5、平台化组价沉淀,对于一些基础的业务,如隔离、熔断、容错等可以做成平台化组件,到一定程度向中台化进阶。

框架分层

在这里插入图片描述

我的公众号
在这里插入图片描述

发布了75 篇原创文章 · 获赞 85 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/zhangchangbin123/article/details/88951963