系统架构设计师 - 单体架构、SOA架构、微服务架构

文章目录

  • 横向对比
  • SOA
    • 设计原则
    • 主要技术
      • UDDI 统一描述发现集成
      • SOAP 简单对象访问协议
      • WSDL web服务描述语言
      • BPEL 业务过程执行语言
      • REST 表述性状态转移
    • 实现方法
      • WebService
      • ESB
      • 服务注册表
    • 主要问题

横向对比

单体架构SOA架构微服务架构
特点复杂性高、技术债务逐渐上升、部署速度越来越慢、扩展能力受限、阻碍技术创新
组件大小单体,大按服务分割成大块的逻辑小块业务逻辑
耦合紧耦合较松耦合松耦合
公司架构单体小型、功能交叉的团队
管理着重中央管理分散管理
目标确保应用交互新功能快速拓展

SOA

一种粗粒度、松耦合的服务架构,每个功能被封装为独立的服务,服务间通过定义精确良好的接口进行通信,客户端可以按一定顺序调用这些服务形成业务逻辑。服务间交互不必关注各自的实现细节,和部署的操作系统环境。SOA中单个服务是基于ODD设计的,但总体上是面向服务的。

设计原则

粗粒度:服务能划分就划分到一起
松耦合:服务间通过接口进行交互,服务实现实现服务接口,
内包含模块化:高度内聚
定义精确稳定:服务的定义要精确,防止错误使用,也要稳定

主要技术

UDDI 统一描述发现集成

服务发布查找规范。定义服务信息注册规范,以便被需要该服务的用户查找并使用。定义服务概念,定义编程接口,用户可根据该接口发布自己的服务,或发现需要的服务以满足业务场景。包括内容:数据模型(描述服务发布查找的相关内容)、API(提供标准的服务发布、服务查找的API接口)、注册服务(注册中心角色,服务请求者和服务提供者的纽带)

SOAP 简单对象访问协议

分布式环境下,基于XML的信息交互协议,定义服务请求者和服务提供者的信息通讯规范。通过XML格式化信息,通过HTTP承载信息,包括:封装(封装一个框架以描述消息发送者、消息提供者、消息具体内容、接收后处理方式)、编码规则(定义序列化机制,用以传输应用间交互的数据类型的实例)、RPC(RPC定义远程过程调用和应答协议)、绑定(绑定底层框架协议,以传输SOAP封装)。SOAP消息内容包括:封装(必选,封装顶层元素)、SOAP头(可选,接收后处理方式等元素)、SOAP体(实际传递消息内容的容器)

WSDL web服务描述语言

描述WEB服务和如何与WEB服务进行通讯的XML语言。描述了三个内容:服务功能、服务数据格式和协议、协议地址端口地址。分为服务接口定义和服务实现定义两种。

BPEL 业务过程执行语言

基于XML的业务过程编程语言,每个业务过程是由WEB服务实现,可以通过排序、组合等自上而下的实现面向服务架构。多个WEB服务可以组合成一个大的组织结构,可以为视为一个WEB服务被使用或参与更大的组织结构。

REST 表述性状态转移

基于HTTP和XML的WEB通讯技术,能够降低开发难度,提高伸缩性。三个关注点分离(资源、资源的表示、资源的操作)。所有的事物都抽象为资源,每个资源都有唯一标志,通过标准统一的操作接口对资源进行操作,对资源操作不会修改资源状态。

实现方法

WebService

分为三个角色,服务提供者(服务所有者,负责定义并实现服务。通过WSDL描述服务特征,通过UDDI将服务发布到注册中心,以便被查找使用)、服务请求者(服务使用则,通过UDDI在注册中心查找相应服务,或直接通过WSDL查找服务特征,然后通过SOAP绑定服务进行调用。可以是服务或浏览器)、服务注册中心(服务提供者和服务发现者的纽带,服务提供者发布,服务请求者查找,可选角色,当静态绑定时,可以没有注册中心)

ESB

传统中间件技术和XML、WEB服务等结合的产物,主要支持异构系统集成,具备复杂数据的传输能力,支持基于内容的路由和增强,并提供统一的一致的接口。

服务注册表

主要用于SOA设计,通过策略执行点,完成服务的注册,以便被查找并使用。

主要问题

服务设计和划分粒度、
SOA服务流程组织、
SOA与原系统集成

SOA

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java字符串连接运算符干了什么?

和其他多数程序设计语言一样,Java 语言允许使用 连接两个字符串。 String name "stephen"; String foo "Hey, " name; 当我们将一个字符串和一个非字符串的值进行拼接时,并不会报错: String name "Stephen&…

文件上传问题org.springframework.web.HttpMediaTypeNotSupportedException: Content type ‘multipart/form-data;

接收表单使用对象接收时不要使用注解 /*** 单文件上传(微信小程序只支持单文件上传)** param file* return* throws Exception*/PostMapping("/filesUpload")public R uploadFile(FormDataReq f, RequestParam("file") MultipartFil…

灵魂拷问:a = 1 + 2 究竟是怎么被 CPU 执行的

来源 | 小林coding作者 | 小林coding头图 | 下载于视觉中国代码写了那么多,你知道 a 1 2 这条代码是怎么被 CPU 执行的吗?软件用了那么多,你知道软件的 32 位和 64 位之间的区别吗?再来 32 位的操作系统可以运行在 64 位的电脑上…

如何利用全站加速,提升网站性能和用户体验?

随着网络技术的发展,越来越多的应用基于互联网发布,再好的应用,如果打开速度慢,10个用户会有9个用户选择离开,相关统计数据显示,每增加0.1秒的加载延迟,将会导致客户活跃度下降1%。在目前获客成…

IDEA 搭建 SpringBoot + Maven + Oracle + Hibernate 项目框架

1.Spring Initializer 创建空项目 2.安装Oracle 3.查询Oracle版本 select * from product_component_version;4.安装Oracle驱动并引入pom 5.添加yml配置文件 server:port: 8989 spring:datasource:driver-class-name: oracle.jdbc.OracleDriverurl: jdbc:oracle:thin:127.0.0…

1418 -This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration

今天在mysql中创建函数的时候,报错如下: ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_…

最近,老王又Get了CDN的新技能

原文链接 本文为云栖社区原创内容,未经允许不得转载。

线程池 总结

文章目录线程池优点线程池创建参数队列种类同步移交队列有界队列无界队列拒绝策略DiscardPolicyAbortPolicyDiscardOldestPolicyCallerRunsPolicy线程池执行流程线程池类型定长 FixedThreadPool轮询 ScheduledThreadPool缓存 CachedThreadPool单线程 SingleThreadPool线程池优点…

阿里的 RocketMQ 如何让双十一峰值之下0故障

作者 | 愈安来源 | 阿里巴巴中间件头图 | 下载于视觉中国2020 年的双十一交易峰值达到 58.3 W笔/秒,消息中间件 RocketMQ 继续数年 0 故障丝般顺滑地完美支持了整个集团大促的各类业务平稳。相比往年,消息中间件 RocketMQ 发生了以下几个方面的变化&…

OAM深入解读:使用OAM定义与管理Kubernetes内置Workload

作者 | 周正喜 阿里云技术专家 爱好云原生,深度参与 OAM 社区 大家都知道,应用开放模型 Open Application Model(OAM) 将应用的工作负载(Workload)分为三种 —— 核心型、标准型和扩展型,这三…

oracle 指定类型和指定位数创建序列号

文章目录一、脚本部分1. 表结构2. 函数二、代码部分2.1. xml2.2. 接口2.3. api接口2.4. api实例2.5. 控制层三、测试3.1. 效果图一、脚本部分 1. 表结构 有注释 -- Create table create table LDMAXNO (NOTYPE VARCHAR2(17) not null,NOLIMIT VARCHAR2(12) not null,MAXNO …

深入解读Flink资源管理机制

作者:宋辛童(五藏)整理:王文杰(Flink 社区志愿者) 摘要:本文根据 Apache Flink 系列直播整理而成,由阿里巴巴高级开发工程师宋辛童分享。文章主要从基本概念、当前机制与策略、未来发…

EasyExcel 实现模板导出、模板导入分析功能

文章目录0.POM依赖1.导出模板实现2.导入模板并分析实现3.git源码0.POM依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency>…

金蝶云拿下客户满意度第一,中国SaaS企业觅得“后发先至”良机

本月&#xff0c;全球SaaS行业迎来了开年第一份重磅奖项的揭晓&#xff1a;由国际知名研究机构IDC颁发的SaaS行业全球客户满意度奖&#xff08;CSAT大奖&#xff09;。 该奖项基于IDC SaaSPath针对全球约2000家组织机构中高层的调研&#xff0c;综合30多项客户满意度指标&…

一名创业者浴火涅磐的自白——对话阿里云MVP孙琦

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 简介&#xff1a; 孙琦喜欢调侃自己为“一个失败的创业者”。跟他聊过之后&#xff0c;我却发现他跟以往的创业者不同&#x…

mysql 指定类型和指定位数创建序列号

文章目录一、脚本部分1. 表结构2. 函数二、代码部分2.1. xml2.2. 接口2.3. api接口2.4. api实例2.5. 控制层三、测试3.1. 效果图一、脚本部分 1. 表结构 有注释 CREATE TABLE ldmaxno (notype varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 号码…

系统架构设计师 - ESB 企业服务总线

文章目录定义功能定义 传统中间件技术和WEB、XML相结合的产物&#xff0c;主要用以异构系统的集成。具备复杂数据的传输能力&#xff0c;支持基于内容的消息路由、过滤&#xff0c;并提供一系列标准的接口。 功能 服务位置透明、 消息路由、 消息增强、 消息格式转换、 传输…

阿里云助力完美日记半年内系统吞吐量提升50倍

阿里云 Redis 直播地址 近年来&#xff0c;完美日记的“小黑钻口红”“动物眼影盘”等爆款彩妆出现在了越来越多女孩子的化妆台上&#xff0c;完美日记&#xff08;Perfect Diary&#xff09;是由逸仙电商在2017年推出的彩妆品牌&#xff0c;凭借着高颜值和性价比&#xff0c;完…

唏嘘!程序员,你的年底KPI完不成的原因找到了!

加班是每个互联网人不愿面对而却又绕不过去的话题&#xff0c;就连面试时“你怎么看待加班”的问题都成了必答题。现在临近年底&#xff0c;大家都在努力冲业绩&#xff0c;期待拿更多的年终奖&#xff0c;回家过个“富足年”。年底冲业绩&#xff0c;势必会增加我们的工作量&a…

阿里云SAG2.0发布,助力企业全球互联

2016年以来&#xff0c;阿里云洛神云网络陆续发布了高速通道、VPN网关、云企业网CEN&#xff08;cloud enterprise network&#xff09;、SAG&#xff08;smart access gateway&#xff09;等混合云网络产品&#xff0c;基于阿里云全球核心网络不断扩展云网络的应用场景&#x…