2019独角兽企业重金招聘Python工程师标准>>>

一、面向服务设计的原则

  • 服务可复用:不管是否存在即时复用的机会,服务均被设计为支持潜在的可复用
  • 服务共享一个标准契约:为了与服务提供者交互,消费者需要导入服务提供者的服务契约,这个契约可以是一个IDL文件,Java接口定义,WSDL文件,甚至是接口说明文档
  • 服务是松耦合的:服务被设计为功能相对独立,尽量不依赖其他服务的独立功能提供者
  • 服务是底层逻辑的抽象:只有经服务契约所暴露的服务队外部世界可见,契约之外底层的实现逻辑是不可见的
  • 服务是可组合、可编排的:多个服务可能被编排组合成一个新的服务,这允许不同逻辑抽象的自由组合,促进服务的复用
  • 服务是自治的:逻辑由服务所控制,并位于一个清晰的边界内,服务已经在边界内被控制,不依赖其他服务
  • 服务是无状态的:服务应当不需要管理状态信息,因此能够维持送耦合性。服务应该被尽可能设计成无状态,即便意味着要将状态管理移至他处
  • 服务是可被自动发现的:服务发布上线后,允许被其他消费者自动发现;当服务提供者下线后,允许消费者接收服务下线通知。

二、服务治理

SOA服务化之后,应用服务化之后给系统运维带来很大挑战:

  • 分布式框架下的服务调用性能
  • 服务化架构如何支持线性扩展
  • 如何实现高效、实时的服务多维度监控
  • 大规模分布式环境下的故障快速定界和定位
  • 分布式环境下海量日志在线检索、模糊查询
  • 服务的流控、超时控制、服务升降级等管控手段
  • 服务的划分原则,如何实现最大程度复用

此时,SOA服务治理是关键。SOA服务治理主要包括如下几个方面:

1、服务定义

SOA治理最基础的方面就是监视服务的创建过程。必须对服务进行标识,描述其功能,确定其行为范围并设计其接口。创建服务时需要与使用这些服务的团队进行协调,以确保服务能够满足消费者需求,避免重复工作。

2、服务生命周期管理

服务的生命周期通常有五个主要的阶段。

  • 计划阶段
  • 测试阶段
  • 运行阶段
  • 弃用阶段
  • 废弃阶段

3、服务版本治理

新版本的前向兼容性,灰度发布等需要按照统一的策略进行管理。

4、服务注册中心

需要统一的服务注册中心支持服务的订阅发布和动态发现机制。

5、服务监控

服务监控中心需要对服务的调用时延、成功率、吞吐率等数据进行实时采样和汇总,通过图形化报表的形式展示,以便运维人员对服务的运行质量进行实时分析和掌控。

6、运行期服务质量保障

包括服务限流、服务迁入迁出、服务升降级、服务权重调整和服务超时控制等,通过运行期的动态治理,可以在不重启服务的前提下达到快速提升服务运行质量的目标。

7、快速的故障定界定位手段

  • 大规模分布式环境下海量业务/平台日志的采集、汇总和实时在线检索,支持多维度的条件检索、模糊查询,可以快速的在线查看各种系统运行日志,方便问题定位;
  • 分布式消息跟踪,通过调用链打通业务、服务调用和异常,发现线上系统故障源;通过在线和离线调用链大数据分析,得到链路各个依赖的稳定性指标,梳理依赖链路风险表,识别系统核心功能的服务调用依赖关系,评估可能的最大风险点,针对性改进以预防风险,同时为容量规划和扩容提供数据决策依据。

8、服务安全

服务安全访问策略有多种,例如可以通过动态生成令牌token的方式做安全访问授权,服务提供者动态生成token并告知服务注册中心,由注册中心告知是否告知消费方,这样就能在注册中心页面上做复杂的授权模型。

微服务架构(MSA)是一种服务化架构风格,通过将功能分散到各个离散的服务中以实现对解决方案的解耦。

三、什么是微服务

微服务架构的主要特征如下:

  • 原子服务:“高内聚,松耦合”
  • 高密度部署:重要的服务可以独立进程部署,非核心服务可以独立打包,合设到同一个进程中,服务被高密度部署。物理机部署,可在一台服务器上部署多个服务实例进程;如果是云端部署,则可以利用LXC实现容器级部署,以降低部署成本,提升资源利用率。
  • 敏捷交付:真正的DevOps。
  • 微自治:服务足够小,功能单一,可以独立打包、部署、升级、回滚和弹性伸缩,不依赖其他服务,实现局部自治。

四、微服务架构对比SOA

两者的主要差异如下:

  • 服务拆分粒度:SOA首先要解决的是异构系统应用的服务化;微服务强调的是服务拆分尽可能小,最好是独立的原子服务。
  • 服务依赖:传统的SOA服务,由于需要重用已有的资产,存在大量的服务间依赖;微服务的设计理念是服务自治、功能单一独立,避免依赖其他服务产生耦合,耦合会带来更高的复杂度。
  • 服务规模:传统SOA服务粒度比较大,多数会采用将多个服务合并打成war包的方案,因此服务实例数比较有限;微服务强调尽可能拆分,同时很多服务会独立部署,这将导致服务规模急剧膨胀,对服务治理和运维带来新的挑战。
  • 架构差异:微服务化之后,服务数量的激增会引起架构质量属性的变化,例如企业集成总线ESB逐渐被P2P的虚拟总线替代;为了保证高性能、低时延,需要高性能的分布式服务框架保证微服务架构的实施。
  • 服务治理:传统基于SOA Governance的静态治理转型为服务运行态微治理、实时生效。
  • 敏捷交付:服务由小研发团队负责微服务设计、开发、测试、部署、线上治理、灰度发布和下线,运维整个生命周期支撑,实现真正的DevOps。

总结:量变引起质变,这就是微服务架构和SOA服务化架构的最大差异。

转载于:https://my.oschina.net/nuaazhaofeng/blog/1517697

SOA与微服务基本原则及对比相关推荐

  1. 单体应用、SOA架构、微服务架构的对比

    目录 前言: 单体架构 SOA架构 微服务架构 前言: 随着近年来云技术的发展,越来越多的用户选择使用云技术来代替传统的IT基础设施.在云技术发展的早期,业界的关注点集中在虚拟化.分布式.存储等laa ...

  2. SOA对微服务的残余影响

    近日,Tareq Abedrabbo在伦敦2017 µCon微服务大会上说,SOA对微服务架构设计的残余影响仍然存在,包括技术选型和组织方面的问题.最直接的一个例子就是大多数企业仍然区分对待架构师和开 ...

  3. SOA和微服务架构的区别?

    知乎用户 289 人赞同了该回答 谢多人邀请,其实前面几位的回答已经差不多了,在这里仅谈下自己的简单总结. 微服务架构强调的第一个重点就是业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多 ...

  4. 系统架构演变:SOA、微服务架构的区别和联系

    1.系统架构演变 随着互联网的发展,网站应用的规模不断扩大.需求的激增,带来的是技术上的压力.系统架构也因此也不断的演进.升级.迭代.从单一应用,到垂直拆分,到分布式服务,到SOA,以及现在火热的微服 ...

  5. 简单聊聊SOA和微服务

    本文转载自:http://dockone.io/article/2399 前两天和一个朋友聊天,他向我咨询如何从零开始构建一个健壮.强大的软件系统,聊着聊着他忽然问我,「听大家都在说微服务(下文中有的 ...

  6. SOA和微服务架构的区别

    SOA和微服务架构的区别? 1 条评论 分享 默认排序按时间排序 10 个回答 203赞同 反对,不会显示你的姓名 知乎用户 大型电信行业SOA实施经验,SOA规划咨询,- 203 人赞同 谢多人邀请 ...

  7. 万字长文解析:分布式架构、SOA、微服务架构、API网关、ESB服务总线架构之间的关联及演进

    1架构演进 架构十五年:改变的是形态,不变的是目的 业务驱动架构形态变化 过去十几年,随着互联网发展以及业务的多样化,系统的架构也在不断发生变化,总体上来说大体经历了从单体应用架构-垂直应用架构-分布 ...

  8. 常见微服务框架和对比分析

    常见的微服务框架 第一代微服务框架  SpringCloud Spring Boot:快速开发微服务的框架(可以快速开发出一个单体微服务项目) SpringCloud 为开发者提供了快速构建分布式系统 ...

  9. SOA和微服务 区别

    首先,可以肯定的是SOA和微服务的确是一脉相承的,大神Martin Fowler提出来这一概念可以说把SOA的理念继续升华,精进了一步.其核心思想是在应用开发领域,使用一系列微小服务来实现单个应用的方 ...

最新文章

  1. 同样都是调参,为什么人家的神经网络比我牛逼100倍?
  2. Verilog中的条件编译语句 `ifdef、`else、`endif 等
  3. 2022 年第一场云原生技术实践营开启报名
  4. Duration(2020多校第二场D)
  5. 【转载】MongoDB基本操作
  6. 虽然现在有可以去码的软件了,可视频是如何自动跟踪打码的?
  7. win7 java注册表_使用JAVA和JNA在64位Win 7上读/写Windows注册表
  8. WritableWorkbook 详细用例 (转)
  9. itellij jdk多重选择Class JavaLaunchHelper is implemented in both
  10. linux函数入参个数限制,PowerShell函数中限制数组参数个数的例子
  11. 怎样将Sublime Text 设置成中文版(完整教程)
  12. 数学|如何求解线性方程系数?
  13. Number of ways to split should evenly divide the split dimension, but got split_dim 3 (size = 4) and
  14. 平均 15144 元、软件工程师占比最高,2021 年 2 月程序员工资最新出炉!
  15. PowerDesigner导入现有表结构
  16. openstack平台上创建云主机
  17. STM32CUBEMX F103 HAL库开发之 USB虚拟串口
  18. Stm32文件系统FATFS(开始于2021-09-09)
  19. Work20230602
  20. 万龙机器人_星辰血途-108.百年仇恨(4)万龙朝苍-爱阅小说网

热门文章

  1. linux usr g 空间不足,centos 磁盘空间不足
  2. dx9 lock unlock效率太低_巧用“动作经济原则”,员工不累,效率加倍!
  3. 记住linux terminal下的快捷键,提高操作效率!
  4. 为您的系统指定一个默认的软件仓库(YUM), 命令行配置自动yum源
  5. 电脑销售渠道_“新冠”影响下,平板电脑市场再现新商机
  6. 蔡氏电路matlab程序,蔡氏电路matlab仿真报告
  7. 服务器健康监控管理系统,一种远程健康监控系统服务器
  8. 中间画一条短竖线_许愿孔明灯怎么画,简约好看的孔明灯简笔画教程
  9. macappstore登不上去_荣耀亲选一度登机箱----一个安静得想放进大侄子的magic box
  10. Java高并发编程:Copy-On-Write容器