当前位置: 首页 > news >正文

SOA和微服务

为什么80%的码农都做不了架构师?>>>   hot3.png

作者:用心阁
链接:https://www.zhihu.com/question/37808426/answer/81212783
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

SOA
SOA的提出是在企业计算领域,就是要将紧耦合的系统,划分为面向业务的,粗粒度,松耦合,无状态的服务。服务发布出来供其他服务调用,一组互相依赖的服务就构成了SOA架构下的系统。

基于这些基础的服务,可以将业务过程用类似BPEL流程的方式编排起来,而BPEL反映的是业务处理的过程,这些过程对于业务人员更为直观,调整也比hardcode的代码更容易。

当然企业还需要对服务治理,比如服务注册库,监控管理等。

我们知道企业计算领域,如果不是交易系统的话,并发量都不是很大的,所以大多数情况下,一台服务器就容纳将许许多多的服务,这些服务采用统一的基础设施,可能都运行在一个应用服务器的进程中。虽然说是面向服务了,但还是单一的系统。

微服务
而微服务架构大体是从互联网企业兴起的,由于大规模用户,对分布式系统的要求很高,如果像企业计算那样的系统,伸缩就需要多个容纳续续多多的服务的系统实例,前面通过负载均衡使得多个系统成为一个集群。

但这是很不方便的,互联网企业迭代的周期很短,一周可能发布一个版本,甚至可能每天一个版本,而不同的子系统的发布周期是不一样的。

而且,不同的子系统也不像原来企业计算那样采用集中式的存储,使用昂贵的Oracle存储整个系统的数据,二是使用MongoDB,HBase,Cassandra等NOSQL数据库和Redis,memcache等分布式缓存。

那么就倾向采用以子系统为分割,不同的子系统采用自己的架构,那么各个服务运行自己的Web容器中,当需要增加计算能力的时候,只需要增加这个子系统或服务的实例就好了,当升级的时候,可以不影响别的子系统。这种组织方式大体上就被称作微服务架构。

微服务与SOA相比,更强调分布式系统的特性,比如横向伸缩性,服务发现,负载均衡,故障转移,高可用。互联网开发对服务治理提出了更多的要求,比如多版本,比如灰度升级,比如服务降级,比如分布式跟踪,这些都是在SOA实践中重视不够的。

Docker容器技术的出现,为微服务提供了更便利的条件,比如更小的部署单元,每个服务可以通过类似Node.js或Spring Boot的技术跑在自己的进程中。可能在几十台计算机中运行成千上万个Docker容器,每个容器都运行着服务的一个实例。随时可以增加某个服务的实例数,或者某个实例崩溃后,在其他的计算机上再创建该服务的新的实例。

这就是我对SOA和微服务架构区别的一点理解。

转载于:https://my.oschina.net/hulubo/blog/816530

相关文章:

  • TreeMap按照value进行排序
  • chrome设置书签默认显示
  • markdown编辑器简评
  • Linux操作系统启动流程梳理
  • [译]MySQL 5.7 Reference Manual::The InnoDB Recovery Process
  • 重拾smslib
  • 【linux命令】之MV
  • 华硕zenfone2 ze551ml刷机
  • 动态规划——买股票的问题
  • Zepto.js源码学习之二
  • JPA 深度刘宝宝剖析版
  • 利用strstr与atoi的结合实现一个C语言获取文件中数据的工具
  • 文字绘制-图片绘制-水印绘制思路
  • C语言 · Anagrams问题
  • C# - 值类型、引用类型走出误区,容易错误的说法
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【RocksDB】TransactionDB源码分析
  • CAP理论的例子讲解
  • Cookie 在前端中的实践
  • egg(89)--egg之redis的发布和订阅
  • Transformer-XL: Unleashing the Potential of Attention Models
  • uni-app项目数字滚动
  • 缓存与缓冲
  • 手写双向链表LinkedList的几个常用功能
  • 硬币翻转问题,区间操作
  • postgresql行列转换函数
  • 回归生活:清理微信公众号
  • # include “ “ 和 # include < >两者的区别
  • (转)我也是一只IT小小鸟
  • .net mvc 获取url中controller和action
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [C\C++]读入优化【技巧】
  • [caffe(二)]Python加载训练caffe模型并进行测试1
  • [C语言]——内存函数
  • [error] 17755#0: *58522 readv() failed (104: Connection reset by peer) while reading upstream
  • [flink总结]什么是flink背压 ,有什么危害? 如何解决flink背压?flink如何保证端到端一致性?
  • [HTML]Web前端开发技术29(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [LeetCode] 148. Sort List 链表排序
  • [one_demo_10]递归解决汉诺塔问题
  • [SWPU2019]Web3
  • [TCP] TCP/IP 基础知识词典(2)
  • [zt]提问的艺术
  • [译]持续集成认证(ContinuousIntegrationCertification)
  • [转]Spring mvc interceptor配置拦截器,没有登录跳到登录页
  • [转]使用控件的RenderControl()方法导出Excel
  • [转贴]别对我嘟嘟叫啦
  • [转载]上班,也可以大格局的上
  • _shared_pool_reserved_pct or shared_pool_reserved_size with ASMM
  • “ABCD”,未来颇具潜力的四大信息技术方向
  • “北斗”知多少?
  • “一刀切”将是存储演变的终点?
  • “云”对商业的启示