2021-01-13 15:19发布
微服务架构就是以业务域或业务功能为边界,将一个大而全的应用拆分为可以独立开发,独立部署,独立测试,独立运行的一组小的应用,并且使用轻量级,通用的机制在这组应用间进行通信。
微服务架构是一项在云中部署应用和服务的新技术。大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务,而红帽说API应该是重点。
微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。关键在于该服务可以在自己的程序中运行。通过这一点我们就可以将服务公开与微服务架构(在现有系统中分布一个API)区分开来。在服务公开中,许多服务都可以被内部独立进程所限制。如果其中任何一个服务需要增加某种功能,那么就必须缩小进程范围。在微服务架构中,只需要在特定的某种服务中增加所需功能,而不影响整体进程的架构。
一、微服务架构的定义
1、定义
微服务是架构设计上的一种风格,他的主旨是通过将一个原本独立的系统拆分成多个小型服务。这些小型服务彼此进程独立,彼此之间通过基于http的restful服务通讯写作。
被拆分的每个小型服务围绕着系统中某一项或一些耦合度较高的业务功能进行构建,并且每个服务维护者自己的数据存储、业务开发、自动化测试用例以及独立的部署机制。
由于有了轻量级的通信写作基础,这些微服务可以使用不同的语言和架构来编写。
2、特性
五毒特性,分别演进
独立进程
独立功能
独立存储
独立测试
独立部署
3、微服务架构 vs 传统架构模式
传统服务架构-单体应用模式
在业务发展初期,业务逻辑在一个应用中,开发测试方便。随着企业发展,需求不断增多,系统功能模块不断增加。
特别是随着移动端设备的发展,前端展现已经不止局限于web方式。
单体应用弊端:
部署在一个进程中,每个功能的修改部署可能会影响其他功能
各个功能使用场景、并发量、消耗的资源各不相同,资源利用相互影响,很难准确评估
随着系统的发展,单体应用维护成本越来越大,且难以控制。
微服务架构优势:
开发维护容易,不影响其他功能运行
独立部署,性能容量评估容易,容易发现系统瓶颈
4、挑战
运维的新挑战:自动化运维,编排运维过程
接口的一致性:接口和版本管理
分布式的复杂性:网络延迟、分布式事务、异步消息等
二、微服务架构的九大特性
1、服务组件化:独立演进而不影响其他单元
2、按业务组织团队:一体化团队,降低内耗,边界清晰
3、做产品的态度:对产品生命周期负责
4、智能端点和哑管道:rest服务和消息中间件实现消息易读和可视化
5、去中心化治理:不同的业务场景可以选择不同的技术平台
6、去中心化管理数据:无事务和最终一致性
7、基础设施自动化:自动化测试和自动化部署
8、容错设计:快速发现故障和快速自动回复
9、演进式设计:初期单体&玻璃经常变动和有一定时间效应的内容鹅绒给技术
三、微服务架构的选择:Spring Cloud
1、当前的解决方案
服务治理:DubboX,Dubbo、Nexflix的Eureka、Apache的Consul
分布式配置管理:百度的Disconf、Netflix的archaius、360的QConf、SpringCloud的Config、淘宝的Diamond
批量任务:当当网的Elastic-job、LinkedIn的Azkaban、SpringCloud的Task等
服务跟踪:京东的Hydra、SpringCloud的Sleuth、Twitter的Zipkin等
。。。
2、综合解决方案:Spring Cloud
兼容机与品牌机的故事
兼容机:自己选择合适的组件,整合框架,技能要求高,兼容性需要验证
品牌机:不重复造轮子,集成特性完备
SpringCloud:借助社区的力量,聚焦业务开发
初始化过程细节:首先进行的就是将服务装载到容器中,然后准备注册服务。和Spring中启动过程类似,Spring启动时,将bean装载进容器中的时候,首先要解析bean。所以dubbo也是先读配置文件解析服务。解析服务:基于dubbo.jar内的META-INF/spring.handlers配置,...
分布式事务 指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上 。换成比较容易理解的话,就是多个事务之间再保持事务的特性,也就是多个事务之间保证结果的一致性。分布式事务解决方案1、基于XA协议的两阶...
1. 接口调用存在的问题 现如今我们的系统大多拆分为分布式SOA,或者微服务,一套系统中包含了多个子系统服务,而一个子系统服务往往会去调用另一个服务,而服务调用服务无非就是使用RPC通信或者restful,既然是通信,那么就有可能在服务器处理...
前提是另外一个bean在bean容器中能找到
1.View——表示层1.1准备数据实现方式:struts,servlet等1.2显示数据实现方式:extjs,jsp,jquery,html等2.Service——业务层实现方式:drools等3.Dao——数据访问层实现方式:hibernate、mybatis等...
哨兵(Sentinel)是 redis 的高可用性解决方案,前面我们讲的主从复制它是高可用的基础,需要人工介入才能完成故障转移,哨兵可以解决这个问题,在主从复制情况下,当主节点发生故障时,哨兵可以自动的发现故障并且完成故障转移,实现真正的 redis 高可用。在...
SpringCloud Netflix和SpringCloud Alibaba的区别如下图:
redis为什么会有高并发问题redis的出身决定Redis是一种单线程机制的nosql数据库,基于key-value,数据可持久化落盘。由于单线程所以redis本身并没有锁的概念,多个客户端连接并不存在竞争关系,但是利用jedis等客户端对redis进行并发访问时会出现问题。发生连...
用dubbo是想利用分布式集群的形式来提高服务的并发量,适用与大型项目.如果不用它还想提高并发另一个解决方案是springCloud+微服务.适合大中小型项目.当前对并发要求的项目还是很多的,所以dubbo用的也相对较多.建议如果是初学者可以跳过dubbo直接学习第二个方...
不需要。一般是service分出去。然后其它放在web层即一个jar为service业务处理,一个为web层war包
在回答这个问题之前,我们先回答一下什么是锁。普通的锁,即在单机多线程环境下,当多个线程需要访问同一个变量或代码片段时,被访问的变量或代码片段叫做临界区域,我们需要控制线程一个一个的顺序执行,否则会出现并发问题。如何控制呢?就是设置一个各个线...
springmvc位于表现层,主要与浏览器进行交互(接收和响应浏览器请求)。springmvc采用MVC设计模型,模型由model、view和controller组成。 model(模型):对应JavaBean view(视图):对应JSP controller(控制器)...
最多设置5个标签!
微服务架构就是以业务域或业务功能为边界,将一个大而全的应用拆分为可以独立开发,独立部署,独立测试,独立运行的一组小的应用,并且使用轻量级,通用的机制在这组应用间进行通信。
微服务架构是一项在云中部署应用和服务的新技术。大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务,而红帽说API应该是重点。
微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。关键在于该服务可以在自己的程序中运行。通过这一点我们就可以将服务公开与微服务架构(在现有系统中分布一个API)区分开来。在服务公开中,许多服务都可以被内部独立进程所限制。如果其中任何一个服务需要增加某种功能,那么就必须缩小进程范围。在微服务架构中,只需要在特定的某种服务中增加所需功能,而不影响整体进程的架构。
一、微服务架构的定义
1、定义
微服务是架构设计上的一种风格,他的主旨是通过将一个原本独立的系统拆分成多个小型服务。这些小型服务彼此进程独立,彼此之间通过基于http的restful服务通讯写作。
被拆分的每个小型服务围绕着系统中某一项或一些耦合度较高的业务功能进行构建,并且每个服务维护者自己的数据存储、业务开发、自动化测试用例以及独立的部署机制。
由于有了轻量级的通信写作基础,这些微服务可以使用不同的语言和架构来编写。
2、特性
五毒特性,分别演进
独立进程
独立功能
独立存储
独立测试
独立部署
3、微服务架构 vs 传统架构模式
传统服务架构-单体应用模式
在业务发展初期,业务逻辑在一个应用中,开发测试方便。随着企业发展,需求不断增多,系统功能模块不断增加。
特别是随着移动端设备的发展,前端展现已经不止局限于web方式。
单体应用弊端:
部署在一个进程中,每个功能的修改部署可能会影响其他功能
各个功能使用场景、并发量、消耗的资源各不相同,资源利用相互影响,很难准确评估
随着系统的发展,单体应用维护成本越来越大,且难以控制。
微服务架构优势:
开发维护容易,不影响其他功能运行
独立部署,性能容量评估容易,容易发现系统瓶颈
4、挑战
运维的新挑战:自动化运维,编排运维过程
接口的一致性:接口和版本管理
分布式的复杂性:网络延迟、分布式事务、异步消息等
二、微服务架构的九大特性
1、服务组件化:独立演进而不影响其他单元
2、按业务组织团队:一体化团队,降低内耗,边界清晰
3、做产品的态度:对产品生命周期负责
4、智能端点和哑管道:rest服务和消息中间件实现消息易读和可视化
5、去中心化治理:不同的业务场景可以选择不同的技术平台
6、去中心化管理数据:无事务和最终一致性
7、基础设施自动化:自动化测试和自动化部署
8、容错设计:快速发现故障和快速自动回复
9、演进式设计:初期单体&玻璃经常变动和有一定时间效应的内容鹅绒给技术
三、微服务架构的选择:Spring Cloud
1、当前的解决方案
服务治理:DubboX,Dubbo、Nexflix的Eureka、Apache的Consul
分布式配置管理:百度的Disconf、Netflix的archaius、360的QConf、SpringCloud的Config、淘宝的Diamond
批量任务:当当网的Elastic-job、LinkedIn的Azkaban、SpringCloud的Task等
服务跟踪:京东的Hydra、SpringCloud的Sleuth、Twitter的Zipkin等
。。。
2、综合解决方案:Spring Cloud
兼容机与品牌机的故事
兼容机:自己选择合适的组件,整合框架,技能要求高,兼容性需要验证
品牌机:不重复造轮子,集成特性完备
SpringCloud:借助社区的力量,聚焦业务开发
相关问题推荐
初始化过程细节:首先进行的就是将服务装载到容器中,然后准备注册服务。和Spring中启动过程类似,Spring启动时,将bean装载进容器中的时候,首先要解析bean。所以dubbo也是先读配置文件解析服务。解析服务:基于dubbo.jar内的META-INF/spring.handlers配置,...
分布式事务 指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上 。换成比较容易理解的话,就是多个事务之间再保持事务的特性,也就是多个事务之间保证结果的一致性。分布式事务解决方案1、基于XA协议的两阶...
1. 接口调用存在的问题 现如今我们的系统大多拆分为分布式SOA,或者微服务,一套系统中包含了多个子系统服务,而一个子系统服务往往会去调用另一个服务,而服务调用服务无非就是使用RPC通信或者restful,既然是通信,那么就有可能在服务器处理...
前提是另外一个bean在bean容器中能找到
1.View——表示层1.1准备数据实现方式:struts,servlet等1.2显示数据实现方式:extjs,jsp,jquery,html等2.Service——业务层实现方式:drools等3.Dao——数据访问层实现方式:hibernate、mybatis等...
哨兵(Sentinel)是 redis 的高可用性解决方案,前面我们讲的主从复制它是高可用的基础,需要人工介入才能完成故障转移,哨兵可以解决这个问题,在主从复制情况下,当主节点发生故障时,哨兵可以自动的发现故障并且完成故障转移,实现真正的 redis 高可用。在...
SpringCloud Netflix和SpringCloud Alibaba的区别如下图:
redis为什么会有高并发问题redis的出身决定Redis是一种单线程机制的nosql数据库,基于key-value,数据可持久化落盘。由于单线程所以redis本身并没有锁的概念,多个客户端连接并不存在竞争关系,但是利用jedis等客户端对redis进行并发访问时会出现问题。发生连...
用dubbo是想利用分布式集群的形式来提高服务的并发量,适用与大型项目.如果不用它还想提高并发另一个解决方案是springCloud+微服务.适合大中小型项目.当前对并发要求的项目还是很多的,所以dubbo用的也相对较多.建议如果是初学者可以跳过dubbo直接学习第二个方...
不需要。一般是service分出去。然后其它放在web层即一个jar为service业务处理,一个为web层war包
在回答这个问题之前,我们先回答一下什么是锁。普通的锁,即在单机多线程环境下,当多个线程需要访问同一个变量或代码片段时,被访问的变量或代码片段叫做临界区域,我们需要控制线程一个一个的顺序执行,否则会出现并发问题。如何控制呢?就是设置一个各个线...
springmvc位于表现层,主要与浏览器进行交互(接收和响应浏览器请求)。springmvc采用MVC设计模型,模型由model、view和controller组成。 model(模型):对应JavaBean view(视图):对应JSP controller(控制器)...