多平台统一管理软件接口,如何实现多平台统一管理软件接口
248
2023-01-02
本文目录一览:
本文主要介绍了架构技术选型与设计-微服务选型,Spring cloud 实现采用的技术,希望对您的学习有所帮助。
架构技术选型与设计-DUBBODubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点(阿里巴巴现在使用架构为HSF)。 于2012-10-24最后版本2.5.3成为最后一版本,由当当接手维护,命名为dubbox;2017年突然继续dubbo进行维护,最后更新版本时间为 2017-10-11 22:21
Dubbo 核心部件:Provider: 暴露服务的提供方。Consumer:调用远程服务的服务消费方。Registry: 服务注册中心和发现中心。Monitor: 统计服务和调用次数,调用时间监控中心。(dubbo的控制台页面中可以显示)Container:服务运行的容器。Dubbo服务集群-集群容错模式
架构技术选型与设计-微服务选型
架构技术选型与设计-DUBBO
架构技术选型与设计-DUBBO
架构技术选型与设计-微服务选型Spring Cloud,从命名我们就可以知道,它是Spring Source的产物,Spring社区的强大背书可以说是Java企业界最有影响力的组织了,除了Spring Source之外,还有Pivotal和Netfix是其强大的后盾与技术输出。其中Netflix开源的整套微服务架构套件是Spring Cloud的核心。如果拿Dubbo与Netflix套件做对比,前者在国内影响力较大,后者在国外影响力较大,在背景上可以打个平手;但是若要与Spring Cloud做对比,由于Spring Source的加入,在背书上,Spring Cloud略胜一筹,但是在高并发上dubbo曾经在阿里的运营中实际承载过过亿用户同时在线的,而Netflix 并没有实际的上线应用中体现过。Spring Cloud下面有19个子项目(可能还会新增)分别覆盖了微服务架构下的方方面面,服务治理只是其中的一个方面,一定程度来说,Dubbo只是Spring Cloud Netflix中的一个子集。但是在选择框架上,方案完整度恰恰是一个需要重点关注的内容,当然从高可用和高并发一起考虑,Spring Cloud 无疑是最佳选择。
1、Spring Cloud Config 配置中心,利用git集中管理程序的配置。
2、Spring Cloud Netflix 集成众多Netflix的开源软件
3、Spring Cloud Bus 消息总线,利用分布式消息将服务和服务实例连接在一起,用于在一个集群中传播状态的变化
4、Spring Cloud for Cloud Foundry 利用Pivotal Cloudfoundry集成你的应用程序
5、Spring Cloud Cloud Foundry Service Broker 为建立管理云托管服务的服务代理提供了一个起点。
6、Spring Cloud Cluster 基于Zookeeper, Redis, Hazelcast, Consul实现的领导选举和平民状态模式的抽象和实现。
7、Spring Cloud Consul 基于Hashicorp Consul实现的服务发现和配置管理。
8、Spring Cloud Security 在Zuul代理中为OAuth2 rest客户端和认证头转发提供负载均衡
9、Spring Cloud Sleuth SpringCloud应用的分布式追踪系统,和Zipkin,HTrace,ELK兼容。
10、Spring Cloud Data Flow 一个云本地程序和操作模型,组成数据微服务在一个结构化的平台上。
11、Spring Cloud Stream 基于Redis,Rabbit,Kafka实现的消息微服务,简单声明模型用以在Spring Cloud应用中收发消息。
12、Spring Cloud Stream App Starters 基于Spring Boot为外部系统提供spring的集成
14、Spring Cloud Task App Starters
15、Spring Cloud Zookeeper 服务发现和配置管理基于Apache Zookeeper。
16、Spring Cloud for Amazon Web Services 快速和亚马逊网络服务集成。
17、Spring Cloud Connectors 便于PaaS应用在各种平台上连接到后端像数据库和消息经纪服务。
18、Spring Cloud Starters (项目已经终止并且在Angel.SR2后的版本和其他项目合并
)19、Spring Cloud CLI 插件用Groovy快速的创建Spring Cloud组件应用。Spring Cloud共集成了19个子项目,里面都包含一个或者多个第三方的组件或者框架!
1、spring cloud : 一个云应用工具,为云应用开发的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁定、决策竞选、分布式会话和集群状态管理等操作
2、spring cloud config :配置管理开发工具包
3、 spring cloud Bus :事件消息总线用于集群(例如:配置变化时间)中传播状态变化,与spring cloud config 联合实现热部署
4、 spring cloud Netflix Eureka : 云端负载均衡基础,一个基于Rest的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移
5、 spring cloud Netflix Hystrix : 容错管理工具,旨在通过控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力
6 、 Netflix ZUUL: 边缘服务工具,提供动态路由、监控、弹性、安全等边缘服务
7、 spring cloud sleuth :日志收集工具包、封装Purpose 、Zipkin和Trace
8、 Spring Cloud Security : 安全工具包,为应用程序添加安全控制,主要是OAuth2
9、 spring cloud turbine :聚合服务器发送时间流,监控集群下Netflix 和 metrics 情况
Spring cloud 配置中心
Spring cloud 注册中心
Spring cloud 网关: 服务路由、安全认证、会话共享、客户端负载均衡、统一异常处理、跨域请求
Spring cloud 断路由
系统主要交互流程如下 :
负载均衡:
集群容错:
名字服务排除和Client主动屏蔽
运行时支撑服务主要包括服务注册中心,服务路由网关和集中式配置中心三个产品。
服务注册中心:
Eureka由多个instance(服务实例)组成,这些服务实例可以分为两种:Eureka Server和Eureka Client
服务路由网关
配置中心
主要包括日志监控,调用链监控, 监控告警通知等产品。
Prometheus + Prometheus
后台服务主要包括 消息系统 , 分布式数据访问层 和 任务调度系统 。后台服务是一个相对比较成熟的领域,很多开源产品基本可以开箱即用。
1. 消息系统
Pulsar的特性
2. 分布式数据访问层
从服务框架选型、运行时支撑服务的选型、服务监控选型、服务容错选型、后台服务选型、服务部署平台选型、存储选型 去看我们整体的微服务的架构,或许会让读者更清晰一些。
Tars致力于建设微服务技术生态,在底层基础设施、服务框架、上层应用以及DevOps等方面,都做了较为深入的研发。
2020年3月10日,Linux基金会正式宣布旗下的TARS开源项目成立TARS子基金会。这是一个 专注于微服务领域 的开源基金会,致力于帮助企业拥抱微服务体系架构,解决在使用微服务方面可能出现的问题。这是首个 起源于中国开源项目 的国际开源基金会,也是Linux基金会下 唯一聚焦微服务技术生态 的子基金会。
Tars基金会里目前收录了9个项目,分为5部分:工具集(Tars Lab)、服务治理(Service Governance)、微服务开发框架(Development Framwork)、存储(DCache)和基础设施(Infrustructure)。
1、Tars Lab
Tars Lab项目提供了压力测试TarsJMeter,基准测试集TarsBenchmark和一些开发工具包。TarsJavaStart,可以生成服务端和客户端的TarsJava脚手架,快速开始Tars服务的开发。TarsTools,是一款支持多种IDE的JetBrains插件,为实现编辑Jce/Tars文件使用的(支持Intellij IDEA、Android Studio、PhpStorm、WebStorm、GoLand、CLion等)。
2、服务治理
服务治理包含了2个项目:TSeer专注于处理服务注册与发现;TarsGateway是基于Tars框架开发的微服务网关,除具备网关的基础功能外,还可以自动将HTTP转换成Tars-RPC协议。
3、微服务开发框架
这部分只包含Tars一个项目,核心模块由C++开发,提供了多语言开发框架,默认rpc调用,是Tars基金会的核心项目。其他项目都是围绕这个项目研发的。
4、微服务存储
这部分只包含DCache一个项目,它是基于Tars框架开发的 分布式共享内存存储系统 ,支持常用的kv数据结构、支持二级索引、支持在线扩缩容、支持自动持久化到后端db等特性。DCache依赖Tars框架的运行,但也得益于Tars,使得存储服务的运维成本几乎为0。
5、微服务基础设施
这是一个将Tars与K8S融合使用的项目,致力于将Tars融入到K8S生态中。
在这方面还有一个更优秀的项目K8SFramework,致力于将Tars与K8S深度融合,相信未来会纳入到基金会中。
| Tars的前世今生
Tars的前身是腾讯内部的TAF框架,已经经过了10年的验证,稳定运行与1.6w+服务器,100多个业务线中。
据统计, Tars已在超过 120 家公司、 261200 台服务器上稳定运行。
在分布式环境下,所有的微服务(包括DCache的服务)都可以通过框架自带的控制台-TarsWeb进行管理, 可以做到所有服务状态可监控,可以在控制台上进行启停、修改配置、执行运维指令等操作。
在分布式部署的情况下,可以通过Web控制台实现一键升级、回退。
Tars自带配置中心,分级配置,可以统一修改配置,做到“一点修改,全局生效”。
在服务部署时,可以在界面上填写要发布的节点,一键部署、扩容。
框架提供了状态监控的能力,可以监控服务的调用质量,如流量情况,平均耗时、超时率和异常率。
框架状态可以在控制台上一键核查。
Tars提供配套的性能测试工具,这也是Tars基金会的子项目。性能测试工作不再依赖专业的测试人员。
| Tars优势
1、原生RPC调用
Tars使用自研的RPC协议通信,服务之间建立长连接,在通信频繁的场景下具备显著的性能优势。
2、多语言支持
除C++和Java外,Tars还支持NodeJs,PHP,Go等语言,提供了相应的SDK。当团队技术栈多样化时,可以多语言协同开发,无缝对接,开发者可以选择自己熟悉的语言进行开发,提升团队整体效率。
在这方面,Spring Cloud想要支持异构语言,需要借助SideCar构建Service Mesh。 业界现在有一些比较流行的服务网格解决方案,但是 并没有形成统一的标准 , 可移植性不高 。比较常见的像Istio,由于是代理模式,而且非长连接,会存在 更大的延迟 。另一方面,Istio的部署和运维都非常 复杂 ,需要更多的学习成本和运维成本。
3、内置服务治理功能
Tars框架内嵌了丰富的服务治理功能,包括熔断、限流、负载均衡、认证、加密等。同时,在服务监控、数据采集,以及灰度部署、跨机房部署等方面,都原生支持,集成度高。
Spring Cloud要支持这些功能,要么需要集成其他组件,要么需要设计开发来实现。都需要付出额外的学习成本和研发成本。
4、运维监控
Tars为使用者提供了一体化的运维管理控制台,我们可以在Web上进行一键部署、扩容、升级、回退等运维操作。
Spring Cloud并没有配套的工具。要实现Web管控, 需要借助K8S和容器,同样需要付出额外的成本。
5、国产化
Tars是国内公司主导的开源项目,这一点就不多说什么了。
6、“套装”优势
Tars框架提供了微服务相关的一体化解决方案,常规情况下不需要再去集成其他组件,不存在兼容性问题。这就好比MacBook和兼容机的区别,兼容机你可能需要付出更多的试错成本才能达到想要的效果。
| 劣势
1、项目热度
Tars开源较晚,到目前只有5年多时间,项目热度不如Spring Cloud,应用也没Spring Cloud广泛。
2、Tars的云原生之路
Tars和K8s的深度融合也开源不久(2020年7月,K8SFramework),还有待落地验证。这个项目现在的更新频率较高,不建议在生产中使用。但是从这一点也可以看到社区工作者对Tars与K8S融合的高涨热情,相信未来这个项目一定会大放异彩!
Tars在微服务开发、运维、监控等方面提供了一体化的解决方案,可以帮助我们低成本构建企业级微服务。适用于各种规模的团队,各种规模的系统。
在做技术选型时,如果团队中有C++开发人员,或者有多语言开发的情况,而且团队规模、资源有限的情况下,建议选择Tars。它在运维、监控、测试等方面会为我们节约大量成本。
未来,随着 K8SFramework 项目的日渐成熟,相信Tars生态会被更多的团队熟知和使用。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~