在互联网发展的初期,用户数量少,一般网站的流量也很少,但硬件成本较高。很多企业会将所有的功能都集成在一起开发一个单体应用,然后将单体应用部署到一台服务器上.一个简单的单本应用如图:
虽然应用是最初的架构,但是目前它并没有消失,还在不停的发展和演进,依然拥有巨大的市场。例如:采用MVC、MVP、MVVM开发的单体应用程序依然火爆,仍能够满足实际业务需求.
为了应对更高的并发、业务需求和解决单体应用的缺点,需要根据业务功能对单体应用的架构方法进行演进,如图:
拆分应有两种方式:水平拆分和垂直拆分
水平拆分是指根据业务来拆分应用.例如,原应用中包含订单、会员两个部分,拆分后可以将其拆分成订单系统和会员系统
其优点是:拆分后保证业务之间的相互影响较小,能合理地分配硬件资源(不同的业务对浏览和性能的要求是不一样的).但是这样可能会导致整个系统存在"重复造轮子"的问题,而且难于维护
垂直拆分是根据调用方法对系统进行拆分.比如,会员系统可以垂直拆分为普通用户和企业用户
其优点是:能按需分配资源和流量,各个垂直调用之间互不影响;但是同样是"重复造轮子"
在分布式系统中,各个小系统之间的交互是不可避免的,此时可将核心业务作为独立的服务抽取出来,
逐渐形成稳定的基础服务,如图:
其优点是:对基础服务进行了抽取,服务之间可以相互调用,提高了代码的复用和开发效率
其缺点是:业务间耦合度变高;调用关系错综复杂;系统难以维护;在搭建集群后,很难实现负载均衡
在服务治理(SOA)架构中,需要一个企业服务总线(ESB)将基于不同无图协议的服务节点连接起来,它的工作是转换、解释消息和路由。服务治理架构如图:
SOA解决了以下问题:
随着业务复杂性、需求多变性和用户规模的不断增长,敏捷开发和DevOps(一种过程、方法的统称,用于促进开发、运维和质量保证部门之间的沟通、合作和整合)变得特别重要。
微服务(Microservices)架构是指:将系统的业务功能划分为极小的独立微服务,每个微服务只关注于完成某个小的任务。系统中的单个微服务可以被独立部署和扩展,且各个微服务之间高内聚、松耦合的。微服务之间采用轻量化通信机制暴露接口来实现通信。
微服务系统架构如图:
服务网格(Service Mesh)独立于服务之外运行,是服务间通信的基础设施层。服务网络类似于在每个服务上粘贴的功能模块。如图:
服务之间通过Sidercar(边车)进行通信,所有Sidercar和网络连接就形成了Service Mesh。
组件说明:
Dubbo致力于提供高性能和透明化的远程服务调用方案和SOA服务治理方案。Dubbo也是采用了Spring的配置方式,对应用没用API没有侵入。
Spring Cloud是基于Spring boot的一个快速开发微服务的框架。它提供了开发微服务所需的一些常见组件。
Spring Clou使得构建大型系统变得非常容易和低成本。小型项目可以采用SpringBoot进行架构,当需要升级到微服务架构时,可以使用Spring Cloud方便地对其进行升级。
lstio将流量管理添加到微服务中,提供了连接、安全、管理和监控微服务的方案。
对比项 | Dubbo | Spring Cloud | lstio |
---|---|---|---|
学习曲线 | 一般 | 平滑,有大量成熟的实例 | 资料较少 |
开发效率 | 低 | 高 | 高 |
集成性 | Jar包依赖的问题多 | 基于Spring Boot,更加便于业务落地 | 目前只在Kubernets上支持比较好 |
文档 | 齐全 | 英文文档齐全 | 齐全 |
支持言语 | Java、Node.js等 | Java、Kotlin、Groovy | 与语言无关 |
开源社区 | 活跃度低 | 活跃度高 | 活跃度高 |
客户端负载均衡 | 无 | Ribbon | Envoy |
批量任务 | 无 | Spring Bathc | 无 |
总结:
Spring Cloud 是Spring家庭产品,一直保持着更新和完善。Spring Cloud的一站式解决方案对于资金和技术实力有限的中小型互联网公司来说是极佳的选择。Spring Cloud 在现阶段或未来较长时间内是最为稳妥的微服务框架。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有