分布式架构与SOA
Posted 天赋吉运科技
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式架构与SOA相关的知识,希望对你有一定的参考价值。
01
分布式系统
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递和协调的系统。
简单来说,就是一群独立计算机集合共同对外提供服务,但是对于系统用户来说,就像是一台计算机在提供服务一样。分布式意味着可以采用更多的普通计算机组成分布式集群对外提供服务,计算机越多,CPU、内存、存储资源等也就越多,能够处理的并发访问量也就越大。
传统架构→分布式
起初,系统之间仅仅是把表现层、业务层、持久层分离开,可以实现解耦合,但是这是在同一台服务器上运行整个系统,客户端可以有多个,他们都将访问同一个终端处理器。但是这种单机部署很可能带来这些问题:系统难以维护、发生单点故障、扩展性差等问题。
当我们单机性能达到瓶颈的时候,第一,可以使用更高级的硬件来提升性能。随之成本也会越来越高。对于一些中小企业根本无法承受。第二,我们可以采用分布式,水平扩展,相对来说,还是比较划算的。
举个例子
当我们用一台单机的tomcat部署时,理想情况下可以实现500的并发。当我们有1000个并发量的时候,需要2台
这时出现了问题:
1、tomcat的性能瓶颈:当很大很大的并发量的时候,当然需要很多台tomcat服务器,但随着tomcat服务器的量越来越大,服务器的能力会先增加,后下降。一般5台就差不多了到量了。
2、tomcat之间的数据同步问题。tomcat之间会互发消息,当其中一台改变了数据,会给其他tomcat发消息,其他tomcat也会做相应的更新同步。但这会出现一个问题,当tomcat量多的时候,发送消息也多,会出现消息风暴,扰乱整个系统的同步。
解决方案
既然,一整个系统无法用tomcat来平衡数据量,但是我们可以把整个系统拆分成多个业务,把每个业务当成一个子系统即可。这是垂直拆分。(分布式)而我们把各个业务都部署上多台服务器来均衡这些数据量,每台服务器承担一部分的用户访问量,每台上的系统是一样的。这是水平扩展。(集群)
结论:分布式架构就是多个子系统互相协作才能完成整个业务流程,系统之间需要进行通信。集群就是同一个工程部署到多台服务器上。
分布式架构的优点:
1、解耦合、系统之间用接口通信。
2、项目拆分,不同的团队负责不同的子项目
3、利于扩展,增加功能,只需增加子项目,调用其他系统接口就好了。
4、可以灵活的进行分布式部署。
缺点:
1、系统之间交互需要远程通信,接口发开增加工作量
2、各模块有一些通用业务逻辑无法公用。
02
分布式架构→soa架构
SOA:(Service Oriented Architecture) 面向服务的架构。把工程拆分成服务层、表现层两个工程,服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需处理和页面的交互,业务逻辑都是调用服务层的服务来实现。
SOA是一个组件模型,它将应用程序的不同功能单元(成为服务),通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,他应该独立于实现服务的硬件平台、操作系统、和变成语言。这是的构建在各种各样的系统中的服务可以从一种统一和通用的方式进行交互。
SOA是把服务分成了若干,表现层分成了若干。表现层和服务层没有耦合关系,表现层可以用任意一个服务层,开发的时候,仅仅是增加服务层和Web层2个工程,并不会把服务层和Web层当成一个整个工程。他们是独立的。而分布式架构是Web和服务层紧紧联系到了一起,一个web层对应一个服务层。所以SOA比分布式架构更加解耦合。扩展也更容易。
SOA的特征:
1、可重用。解决了分布式的缺点。不同的web层可以共用一个服务层。
2、松耦合。服务请求者到服务提供者的绑定与服务之间是松耦合的,服务请求者不需要知道服务提供者实现的技术细节。
3、明确定义的接口。
4、无状态的服务设计。服务不应该依赖其他服务的上下文和状态。当产生依赖时,他们可以定义成通用的业务流程,函数和数据模型。
5、基于开放标准。
SOA体系结构中的角色包括:
1、服务请求者
是一个应用程序、一个软件模块、另一个服务。他发起对注册中心的服务的查询,通过传输绑定服务、并且执行服务功能,服务请求者根据接口契约来执行服务。
2、服务提供者
是一个可通过网络寻址的实体,他接受和执行来自请求者的请求,他将自己的服务和接口契约发布到服务注册中心。
3、服务注册中心
是服务发现的支持者,他包含一个可用服务的存储库,并运行感兴趣的服务请求者查询服务提供者接口。
小结
,基于容器,云原生的应用,这些自动化的设计将颠覆程序猿的世界,在了解架构发展的同时,也要紧跟时代潮流。
编辑: 十五期 贺天远
以上是关于分布式架构与SOA的主要内容,如果未能解决你的问题,请参考以下文章