MSA(微服务简介)
1、为什么要使用微服务?
要说为什么要使用微服务,我们要先说下传统的企业架构模式-垂直架构/单块架构模式,简单点说:我们一般将系统分为三层架构,但是这是逻辑上的三层,而非物理上的三层,这就意味着经过编码后,我们需要将这三层的代码打包部署,最终还是运行在同一台机器的同一个进程中。即单块架构模式就是功能集中,代码数据集中,一个发布包、部署运行在同一个进程中的应用程序,重点是同一个进程。
这种架构存在自己的优势也有弊端,优势是:易于开发,易于测试,易于部署,易于水平伸缩。
弊端:维护成本高,修改一处代码就需要重新部署;持续交付周期长;信任培养周期长;技术选型成本高,可扩展性差。
正是因为有了这些弊端,后期出现了SOA(面向服务的架构),但是SOA是粗粒度的服务模式,后面又出现了MSA,所以微服务是SOA的一个子集,是SOA的一个细化,是细粒度的服务。
2、什么是微服务?
这个没有什么明确的定义,可以这么理解:微服务是一种架构模式,将单一的应用程序划分成多个小组服务,这些小组服务互相协调,互相配合,最终完成整个项目。这些小的服务可以根据上下文选用自己适合的语言、工具来进行实现,实现了高度自治。个人认为:类似于中国有56个民族,这56个民族构成了中国整个大国,但是每个民族有自己的语言自己的风俗习惯,实现了民族自治。
3、微服务有哪些优势?
对比传统的单一架构模式,我们可以看到微服务的不同,分布式的服务模式,每个模块独立自治。所以这出现了它的优势:
(1)服务作为组件。这个组件可以这样理解:比如汽车由不同的零部件构成,当某个零部件出问题的时候,我们只要修理这个零部件即可,每个零部件都是可以独立升级独立替换的。
所以可以认为每个小服务是一个组件。
(2)围绕业务组织团队:根据不同的业务来组织团队,实现敏捷开发。
(3)关注产品而非项目
(4)技术的多样性,由于服务的自治性,每个业务可以采用不同的技术实现。
(5)业务数据独立:比如一个CRM系统,对于数据较多,更新又比较频繁的我们可以使用文档型的数据库mongoDB,对于用户访问系统时产生的会话信息,我们使用redis存储,而对于结构性强,数据比较多,但变化不大的我们可以采用关系型数据库。
(6)基础实施自动化:这里主要使用云来快速构建系统资源,DevOps的运维。(这个暂时不太清楚)
(7)演进式架构
4、微服务有哪些缺点?
每个事物都有两面性,有优点也有缺点:
(1)分布式系统的复杂度:
性能方面:由于采用了分布式,服务间的通信需要考虑网络延迟以及带宽的影响。
可靠性:有可能出现单点故障
数据的一致性:分布式的事务管理需要跨多个节点,因此这个数据一致性是一个问题。
(2)运维成本
配置、部署、监控和警告、日志收集的成本升高。
(3)部署自动化:微服务的每个服务单元很多,由于系统迭代很快,我们需要多次更新,而现在还需要人工部署审查这些,所以部署的自动化就面临着挑战。
(4)服务间的依赖测试:测试每个服务间的正常通信量加大,测试面临挑战。
总结:微服务强调的是一种独立开发、独立测试、独立部署、独立运行的高度自治的架构模式,也是一种更灵活、更开发、更松散的演进式架构。
MSA(微服务简介)的更多相关文章
- Spring Cloud与微服务构建:微服务简介
Spring Cloud与微服务构建:微服务简介 单体架构及其不足 1.单体架构简介 在软件设计中,经常提及和使用经典的3曾模型,即表示层.业务逻辑层和数据访问层. 表示层:用于直接和用户交互,也成为 ...
- SpringCloud微服务简介(一)
Spring Cloud简单认识 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务.这些小的Web服务可以独立地编译及部署,并通过 ...
- 1、Spring Cloud - 微服务简介
前言: 业界大牛马丁.福勒(Martin Fowler) 这样描述微服务: 论文网址:https://martinfowler.com/articles/microservices.html 就目前而 ...
- java微服务简介与实战
今年做了一段时间的可见光.ceph存储,后端开发微服务项目,在这记录点东西,也方便大家借鉴查找. springboot的项目实例:https://github.com/ityouknow/spring ...
- SpringCloud学习(一):微服务简介
一.前情概要 1.单体架构是什么 1).一个归档包包含了应用所有功能的应用程序, 我们通常称之为单体应用. 2).架构单体应用的架构风格, 我们称之为单体架构, 这是一种比较传统的架构风格. 2.单体 ...
- Spring Cloud(1):微服务简介
架构的演进: 1.十年前:用户->单一服务器->单一数据库(支持十万级用户) 2.五年前:用户->负载均衡器->多台服务器->缓存集群->主从数据库(支持百万级用户 ...
- Spring Cloud微服务简介
概述 Spring Cloud给开发者提供一套按照一定套路快速开发分布式工具.它为微服务架构中涉及**配置管理,服务治理,断路器,智能路由,微代理,控制总线,全局锁,分布式会话和集群状态等操作提供了一 ...
- 【JMICRO】 微服务简介及异步RPC体验
一,为什么写JMicro 印象中初次接触微服务大概是2011年,那会做Eclpise插件开发,网上查看好多关于OSGI的技术文章,发现Spring新出了一个叫Spring-boot的框架,那会没太上心 ...
- Spring Cloud及微服务简介
最近在看微服务编排的东西,看到一篇入门博客,私以为不错,再次分享下:https://blog.csdn.net/w05980598/article/details/79007194 什么是微服务 微服 ...
随机推荐
- [C++基础] 成员变量的初始化顺序
转载链接:https://blog.csdn.net/qq_37059483/article/details/78608375 1.成员变量在使用初始化列表初始化时,只与定义成员变量的顺序有关,与构造 ...
- jpa的@Query中"?"占位符的使用小坑
今天使用@Query自定义查询语句,出现了一个错误: java.lang.IllegalArgumentException: Parameter with that position [1] did ...
- 20181023-10 Alpha阶段第2周/共2周 Scrum立会报告+燃尽图 07
作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2290 Scrum master:范靖旋 一.小组介绍 组长:王一可 组员: ...
- Python:迭代器的简单理解
一.什么是迭代器 迭代,顾名思义就是重复做一些事很多次(就现在循环中做的那样).迭代器是实现了__next__()方法的对象(这个方法在调用时不需要任何参数),它是访问可迭代序列的一种方式,通常其从序 ...
- SSH 框架的心得
使用SSH框架做完了一个普通网站的前后台项目,成热写点心得,免得以后再入坑.其中使用 Strust2 2.3.33 + Spring 4.3.9 + Hibernate 5.2.10 eclipse ...
- 如何防止app接口被别人调用
app开发的时候,如何保护app的接口呢? 用https是我想到的办法,但是不知道怎么实现,所以就考虑用token,虽然不是绝对有效,但是能防止一般的用户来攻击,高手非要攻击,只能报警了吧. toke ...
- 使用kdump内核调试工具遇到的问题及解决
修改linux内核代码或者内核模块的时候,搞不好就会造成linux死机崩溃,crash死机后/var/log/kern.log里面不会有任何异常信息记录.这时候kdump就会派上用场了,网上kdump ...
- c99标准的restrict关键字
参考自restrict restrict解释 restrict关键字出现于C99标准,wiki上的解释restrict from wiki. In the C programming language ...
- Scrum Meeting Beta - 3
Scrum Meeting Beta - 3 NewTeam 2017/12/1 地点:新主楼F座二楼 任务反馈 团队成员 完成任务 计划任务 安万贺 完成布局方面的界面优化Issue #125 李奕 ...
- $(document).click() 在苹果手机上不能正常运行解决方案
本来是如下一段跳转代码,发现在安卓和微信开发者工具上都能正常运行,但是苹果手机就不行了. $(document).on('click', '.url', function(){ location.hr ...