架构演化之SOA和微服务
架构演化
架构是适应业务场景而生,有什么业务就有什么解决方案,即架构。
单体架构,如MVC
SOA架构
- 面向服务,按服务拆分all in的大应用
- 技术实现
- ESB:企业服务总线 - 支持异构环境中的服务、 消息, 以及基于事件的交互, 并且具有适当的服务级别和可管理性
- XML:消息交换格式
- SOAP:通常使用HTTP交换XML格式的消息
- WSDL:使用xml描述服务的接口,协议和格式
- UDDI:基于xml的注册协议,用于发布wsdl
- Web Service:使用以上四种技术,跨平台跨语言的应用接口技术/服务通信技术
- 解决了
- 缺点
- ESB笨重复杂的组件,它主要解决不同技术架构应用方面的通信(服务注册与发现),使用XML格式
- 虽然实现了分布式和水平罗展,但是ESB确是中枢,整体还是中心化的
- 缺乏统一标准,厂商之间的解决方案很难切换
- 不适合云环境
微服务架构
- 有一种说法是微服务是SOA的变体或子集。我们可以这样理解,微服务的服务拆分粒度更小。soa解决复用的问题,微服务解决扩展的问题
- 特点
- 一套小服务
- 独立进程
- 轻量级通信协议
- 可独立部署
- 多语言&不同储技术
- 优点
- 拆分粒度小,业务单一和聚焦,服务复用和服务解耦
- 易于开发,测试,部署,运维。更好实现敏捷开发和DevOps开发运维一体化
- 方便引入新技术
- 按需伸缩
- 缺点
- 分布式代价:分布式事务,分布式锁,远程调用
- 协同代价:一个项目上线可能涉及到数十个应用,这些项目又是不同的团队维护
- 服务拆分需要很强的设计功力:拆分不好,服务就不能实现高内聚低耦合的要求
- 服务爆炸,管理困难。调用链路变长,请求时间变长,并且难以追踪
- 部署和运维困难
- 总结
- 可以看出优点也是缺点,一体两面。
- 拆分的粒度小:优点,服务复用,解耦。缺点,服务爆炸,调用链路变长,难以追踪,拆分不好服务就不能实现高内聚低耦合
- 单个服务易于开发测试部署运维,但是一个需求往往涉及众多服务,有时可达几十个,部署和运维困难也不简单。
- 服务拆分后面临分布式开销与问题,分布式锁,网络开销,分布式事务等等。
- 广义的微服务不仅是定义之内的技术实现,还需要解决落地的问题,比如自动化部署与运维
概念
- 微服务中心概念是服务
- 可以拆分为多个关注点
- 服务注册中心
- 服务列表
- 服务注册
- 服务发现
- 负载均衡
- 硬件负载均衡如F5
- 软件负载均衡
- 服务端负载均衡
- 客户端负载均衡
- 服务容错
- 限流
- 熔断
- 网关
- 统一接入:路由
- 协议适配
- 流量管控:限流
- 安全防护:统一鉴权
- 黑白名单:IP地址控制
- 长短连接支持
- 链路追踪
- 服务注册中心
云原生,云服务
架构演化之SOA和微服务相关推荐
- 系统架构演变:SOA、微服务架构的区别和联系
1.系统架构演变 随着互联网的发展,网站应用的规模不断扩大.需求的激增,带来的是技术上的压力.系统架构也因此也不断的演进.升级.迭代.从单一应用,到垂直拆分,到分布式服务,到SOA,以及现在火热的微服 ...
- 单体、SOA、微服务的介绍
本文涉及的内容以及知识点如下: 1.单体架构 2.单体架构的拆分 3.SOA与微服务的区别 4.微服务的优缺点 5.微服务的消息 6.服务集成 7.数据的去中心化 目录 单体架构 单体架构的拆分 SO ...
- 万字长文解析:分布式架构、SOA、微服务架构、API网关、ESB服务总线架构之间的关联及演进
1架构演进 架构十五年:改变的是形态,不变的是目的 业务驱动架构形态变化 过去十几年,随着互联网发展以及业务的多样化,系统的架构也在不断发生变化,总体上来说大体经历了从单体应用架构-垂直应用架构-分布 ...
- 阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别
内容大纲: 1.介绍Restful.SOAP.RPC.SOA以及微服务 2.重点谈谈SOA与微服务的区别 3.以及为什么要使用微服务架构 什么是Restful Restful是一种架构设计风格,提供了 ...
- SOA和微服务架构的区别?
知乎用户 289 人赞同了该回答 谢多人邀请,其实前面几位的回答已经差不多了,在这里仅谈下自己的简单总结. 微服务架构强调的第一个重点就是业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多 ...
- 单体架构、SOA、微服务架构
1. 单体架构的问题 在Java Web开发中,web工程一般会被打包为war包部署在Servlet容器中,如Tomcat.比较简单,开发和调试部署都很方便. 但是当用户量大时,并发量高时,一 ...
- SOA和微服务架构的区别
SOA和微服务架构的区别? 1 条评论 分享 默认排序按时间排序 10 个回答 203赞同 反对,不会显示你的姓名 知乎用户 大型电信行业SOA实施经验,SOA规划咨询,- 203 人赞同 谢多人邀请 ...
- 单体架构、SOA和微服务
1.定义 单体架构: 单体架构就是把所有功能逻辑全部放在一个项目里,打包发布的时候以一个jar或war包的形式发布,部署简单,但是随着业务流量或网站流量的增加,必然暴露其致命缺陷(后续说明) SOA( ...
- 面向服务架构(SOA)与微服务架构
面向服务架构 面向服务架构的思想在整个软件的架构中已经不是什么新鲜的东西.我简单地认为服务化是模块化的延伸,所以服务化有着和模块化类似的优点和缺点.无论你采用哪种协议定义服务与服务之间的通信方式(如W ...
最新文章
- 线上服务 CPU 又 100% 啦?一键定位 so easy!
- 搭完环境,最后登录时提示“与数据库连接失败,请与管理员联系”
- c++ vector iterator
- 使用cmake重写live555工程-附源码和视频教程
- springboot接收json参数_Springboot + Vue + shiro 实现前后端分离、权限控制
- 不到 100 行 Python 代码徐峥变葛优
- 淘宝设计万能PSD分层模板(简约页面设计——少即是多)
- 把UltraEdit改造成VC
- GEEer成长日记六:Sentinel-2计算逐日NDVI时间序列
- 天梯赛L2-016 愿天下有情人都是失散多年的兄妹
- 【H3C模拟器】VLAN单臂路由通信:用路由器实现和三层交换机实现
- 爱思服务器能不能更新苹果手机系统,苹果手机系统升级带来的利和弊,你知道多少?...
- 【ABC 132 E】Hopscotch Addict(最短路)
- 泛微OA二次开发基础培训文档
- 由VB6.0的load窗体事件——看顺便学习法
- STI、LOD与WPE概念2:减少或避免WPE/STI效应对IP模块设计的影响
- 解决电脑(win10)打开右键反应很慢--测试有效
- 浏览器主页被强制改为毒霸网址大全
- 多少分才能考上重庆计算机学校,中考考多少分才能在重庆上一所普通高中?
- 31个网络工程师必备高频软件大汇总