有十来天没发文了,实在抱歉!最近忙着录视频,同时也做了个开源的后台管理系统LeeCX,目前比较简单,但是后续会把各类技术完善。具体可以点击“原文链接”。

那么今天继续说分布式系统的那些事。

我们现在动不动就讲分布式吧?那么SOA是不是必须得聊一聊呢?

面向服务的架构,简称SOA,他是基于服务组件的,把原来那种一个大型应用程序的不同的功能拆分为一些接口,通过这些接口串联起来。

这么做的好处是:

1、重用性大大提高

2、明确了接口的服务定义规则

3、定义了自家公司的api标准

4、降低系统耦合性

5、无状态HTTP

SOA不是技术也不是什么标准,他是一个架构,每个公司对SOA的架构体系都不同,有简单的也有复杂的,更有超越荣耀王者那边的微服务存在。

曾经的SOA,我也参与过,那些接口设计十分复杂,用的是SOAP,数据传输通过xml来封装的,虽然那个时候我还是个新手,但是我坚信这样的不人性化的玩意迟早要被替代,如今restful风格的架构已经完全替代之。

现如今不论是SOA还是微服务。我们都会利用restful风格来做,甚至我们还会定义自己的一套标准规范,强制开发人员定义的所有api接口必须走这样的规范,这么做的好处是可以让前后端分离,开发人员可以只专注自己的接口或者对接工作即可。

跟过时的SOAP相比,restful简直就是简介明了的实现方案。所有的服务都是松耦合,可以为第三方提供各式各样的接口。传播行为也十分轻量级。

restful的设计规范:

1、使用URL来同一表示我们的资源路径,这个URL应该一目了然,让人知道调用这个接口地址就能够做什么事

2、接口的同一定义:

对于增删改查CRUD就有了十分明确的定义,request的请求方式有4种,

POST用于定义create操作;

GET用于定义查询操作;

PUT用于定义修改操作;

DELETE用于定义删除操作;

此外执行的那个业务方法名(action或者controller),必须定义为名字意义(对于这个我个人觉得没必要,各自根据自己公司的业务定义即可,官方的规范很难以执行,而且命名会很纠结)

3、无状态性:

普通的web应用我们都是用的session来管理用户会话,但是restful的SOA中,我们必须得使用无状态会话,sessionless,比如利用redis来实现,或者spring-session

4、返回客户端的状态:

我们得定义浏览器的状态,就像404或者500那样,出错了得有一个状态值,最常用的就是200状态,然后就是501、502、503……这样定义下去,而这个状态需要封装在你的一个json实体中让对方获取后进行解析,不论是ajax或者restful,都可以获得这样的json字符串再转换为想要的pojo

分布式系统的那些事儿(六) - SOA架构体系的更多相关文章

  1. 构建基于分布式SOA架构的统一身份认证体系

    摘要:本文充分利用SOA架构松耦合的特点,通过规范统一网络接口实现业务系统整合,既提升系统安全性,又简化资源访问操作,具有重要的理论和现实意义. 统一身份认证旨在将分散在各个信息系统中的用户和权限资源 ...

  2. 基于springCloud的分布式架构体系

    Spring Cloud作为一套微服务治理的框架,几乎考虑到了微服务治理的方方面面,之前也写过一些关于Spring Cloud文章,主要偏重各组件的使用,本次分享主要解答这两个问题:Spring Cl ...

  3. 微服务理论之五:微服务架构 vs. SOA架构

    一.面向服务的架构SOA 面向服务的架构是一种软件体系结构,应用程序的不同组件通过网络上的通信协议向其他组件提供服务.通信可以是简单的数据传递,也可以是两个或多个服务彼此协调连接.这些独特的服务执行一 ...

  4. SOA架构设计经验分享—架构、职责、数据一致性

    阅读目录: 1.背景介绍 2.SOA的架构层次 2.1.应用服务(原子服务) 2.2.组合服务 2.3.业务服务(编排服务) 3.SOA化的重构 3.1.保留服务空间,为了将来服务的组合 4.运用DD ...

  5. 论SOA架构的几种主要开发方式

    转: http://blog.csdn.net/chenleixing/article/details/44926955  面向服务架构soa以其独特的优势越来越受到企业的重视,它可以根据需求通过网络 ...

  6. SOA架构设计(转发)

    阅读目录: 1.背景介绍 2.SOA的架构层次 2.1.应用服务(原子服务) 2.2.组合服务 2.3.业务服务(编排服务) 3.SOA化的重构 3.1.保留服务空间,为了将来服务的组合 4.运用DD ...

  7. SOA 架构中的ESB是更好的应用于异构系统集成整合还是用于统一服务调用/基础服务实施

    一.讨论主题与观点 写一篇文章.发现一次自觉得有意思的SOA架构方面的讨论,源于昨天AgileEAS.NET SOA 平台群(113723486)里几个群友的一次关于ESB的一次讨论. 大家的讨论观点 ...

  8. 论SOA架构的几种主要开发方式【转】

           面向服务架构soa以其独特的优势越来越受到企业的重视,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署.组合和使用.服务层是SOA的基础,可以直接被应用调用,从而有效控制系 ...

  9. [转]SOA架构设计经验分享—架构、职责、数据一致性

    阅读目录: 1.背景介绍 2.SOA的架构层次 2.1.应用服务(原子服务) 2.2.组合服务 2.3.业务服务(编排服务) 3.SOA化的重构 3.1.保留服务空间,为了将来服务的组合 4.运用DD ...

随机推荐

  1. 感谢大家对《Cocos2d-JS开发之旅》的支持

    昨天收到一封读者的来信,给我报了个喜,也提了一些非常好的建议. 他通过短短1个月时间就完成了学习和游戏开发,并发布了Android和iOS平台,真了不起.授人以鱼不如授人以渔,这也是写书的最大喜悦吧. ...

  2. 4、线程范围内的数据共享之ThreadLocal

    /** * 线程范围类的数据共享 * 核心:ThreadLocal类 * 实际场景: * Hibernate的getCurrentSession方法,就是从线程范围内获取存在的session,如果不存 ...

  3. python之docstrinigs

    # -*- coding: cp936 -*- #python 27 #xiaodeng #docstrinigs #文档字符串惯例 ''' 1.多行字符串 2.首行以大写字母开始,以句号结束 3.第 ...

  4. java while循环语句

    //循环语句 //符合条件,循环继续执行,否则循环退出. //特点: //先判断,后执行 public class Test16{ public static void main(String arg ...

  5. 简单的BSON OID生成实现

    简单的OID生成测试实现,只是简单的用用,切勿用于生产环境. /* 应该使用大端序的,这里没有做转换 * ObjectId是12-byte BSON类型,其结构为: * * 4-byte 值为Unix ...

  6. 微软微服务架构eShopOnContainers

    为了推广.Net Core,微软为我们提供了一个开源Demo-eShopOnContainers,这是一个使用Net Core框架开发的,跨平台(几乎涵盖了所有平台,windows.mac.linux ...

  7. 查看Window系列本地账户密码

    mimikatz,很出名的查看Window本地账户密码(经测试,不支持探测Window在线账户认证密码的探测) github: https://github.com/gentilkiwi/mimika ...

  8. 编译安装linux内核步骤

    编译安装linux内核步骤: 一.获取内核源码 源码网址:www.kernel.org 二.解压内核源码 首先以root帐号登录,然后进入/usr/src子目录.如果用户在安装Linux时,安装了内核 ...

  9. PHP调用mysql函数整理

    mysql函数整理 名称:mysql_connect() 用途:打开非持久的 MySQL 连接.如果成功,则返回一个 MySQL 连接标识,失败则返回 FALSE. 语法:mysql_connect( ...

  10. Easyui入门视频教程 第08集---登录实现 ajax button的使用

    目录 ----------------------- Easyui入门视频教程 第09集---登录完善 图标自定义   Easyui入门视频教程 第08集---登录实现 ajax button的使用  ...