SOA && REST

soa, https://baike.baidu.com/item/SOA/2140650web

概念理解:https://www.zhihu.com/question/42061683,里面的回答:算法

  【 SOA粗暴理解:把系统按照实际业务,拆分红刚恰好大小的、合适的、独立部署的模块,每一个模块之间相互独立。数据库

好比现我有一个数据库,一个JavaWeb(或者PHP等)的网站客户端,一个安卓app客户端,一个IOS客户端。json

如今我要从这个数据库中获取注册用户列表,若是不用SOA的设计思想,那么就会这样:JavaWeb里面写一个查询方法从数据库里面查数据而后在网页显示,安卓app里面写一个查询方法查询后在app上显示,IOS一样如此。这里就会出现查询方法重叠了,这样的坏处很明显了,三个地方都有相同的业务代码,要改三个地方都要改,并且要改的如出一辙。固然问题不止这一个。设计模式

因而乎出现了这样的设计思想,好比用Java(或者是其余语言皆可)单首创建一个工程部署在一台服务器上,而且写一个方法(或称函数)执行上述查询操做,而后使其余人能够经过某种途径(能够是http连接,或者是基于socket的RPC调用)访问这个方法获得返回数据,返回的数据类型是通用的json或者xml数据,就是说把这个操做封装到一个工程中去,而后暴露访问的方式,造成“服务”。好比这里就是注册用户服务,而关于注册用户的全部相关增删改查操做这个服务都会提供方法。缓存

这样一来,JavaWeb这边能够访问这个服务而后获得数据使用,安卓和IOS这里也能够经过这个服务获得数据。并且最重要的是,要修改关于注册用户的业务方法只要改这个服务就行了,很好的解耦。同理,其余业务好比商品、广告等业务均可以单独造成服务部署在单独服务器上。安全

还有就是一旦哪天忽然有一堆人要注册,假设这堆人仅仅只是注册而不作其余事情,其余业务好比商品、广告服务等都不忙,惟独注册这个功能压力很大,而原有的一台部署了注册服务的服务器已经承受不了这么高的并发,这时候就能够单独集群部署这个注册服务,提供多几台服务器提供注册服务,而其余服务还不忙,那就维持原样。服务器

固然,还有不少其余好处。网络

以上我所描述的都还不能彻底称为SOA,还不够完整,由于它少了服务治理这一环节。架构

什么是服务治理,就是当服务愈来愈多,调用方也愈来愈多的时候,它们之间的关系就变得很是混乱,须要对这些关系进行管理。举例,仍是上面的例子,假如我有一个用户服务,一开始有调用方1和调用方2来使用这个服务,后来愈来愈多,将近上百个调用方,这个时候做为服务方,它只知道提供服务,殊不知道具体为谁提供了服务。而对于开发者来讲,知道这N多调用方和N多服务方之间的关系是很是重要的。

因此这个时候就须要能进行服务治理的框架,好比dubbo+zookeeper,好比SpringCloud,有了服务治理功能,咱们就能清晰地看到服务被谁谁谁调用,谁谁谁调用了哪些服务,哪些服务是热点服务须要配置服务器集群,而对这个服务集群的负载均衡也是服务治理能够完成的重要功能之一。

这个时候就是彻底形态的SOA了。

实际上SOA只是一种架构设计模式,而SOAP、REST、RPC就是根据这种设计模式构建出来的规范,其中SOAP通俗理解就是http+xml的形式,REST就是http+json的形式,RPC是基于socket的形式。上文提到的CXF就是典型的SOAP/REST框架,dubbo就是典型的RPC框架,而SpringCloud就是遵照REST规范的生态系统。

      】 

 

组件模型待补充

https://blog.csdn.net/wdeng2011/article/details/78274683

REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统,好比 web 应用程序。

原则条件

    REST 指的是一组架构约束条件和原则。知足这些约束条件和原则的应用程序或设计就是 RESTful。

 

     Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每一个请求都必须包含理解请求所必需的信息。若是服务器在请求之间的任什么时候间点重启,客户端不会获得通知。此外,无状态请求能够由任何可用服务器回答,这十分适合云计算之类的环境。客户端能够缓存数据以改进性能。

 

  在服务器端,应用程序状态和功能能够分为各类资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每一个资源都使用 URI (Universal Resource Identifier)获得一个惟一的地址。全部资源都共享统一的接口,以便在客户端和服务器之间传输状态。使用的是标准的HTTP方法,好比GET、PUT、POST 和DELETE

 

分层系统

    另外一个重要的 REST原则是分层系统,这表示组件没法了解它与之交互的中间层之外的组件。经过将系统知识限制在单个层,能够限制整个系统的复杂性,促进了底层的独立性。

    当 REST架构的约束条件做为一个总体应用时,将生成一个能够扩展到大量客户端的应用程序。它还下降了客户端和服务器之间的交互延迟。统一界面简化了整个系统架构,改进了子系统之间交互的可见性。REST简化了客户端和服务器的实现。

 

    REST 描述了一个架构样式的互联系统(如Web应用程序)。REST约束条件做为一个总体应用时,将生成一个简单、可扩展、有效、安全、可靠的架构。因为它简便、轻量级以及经过HTTP直接传输数据的特性,RESTful Web服务成为基于SOAP服务的一个最有前途的替代方案。用于web服务和动态Web应用程序的多层架构能够实现可重用性、简单性、可扩展性和组件可响应性的清晰分离。开发人员能够轻松使用Ajax和RESTful Web服务一块儿建立丰富的界面。

相关文章
相关标签/搜索