当前位置:   article > 正文

微服务介绍

微服务介绍

06bbc0887dd2452eaca098f65f169135.jpg

名词解释:

 

1)表示层:用于直接和用户交互,也称交互层,通常指网页、UI等。

 

2)业务逻辑层:用户输入的信息经过业务逻辑层的处理展现给用户,即后端代码的实现部分。

 

3)数据访问层:用于操作数据库,对数据库进行读写操作。

 

4)单体框架:在一台服务器部署所有资源,包括应用程序、数据库、文件资源。(适用于小型应用的初期阶段,访问量较小)

 

5)熔断机制:高并发情况下线程阻塞,线程资源消耗殆尽,导致服务不可用。由于服务的相互依赖,导致整个系统不可用,为防止类似事情产生,使用熔断机制。设置阀值、自我修复机制。

 

6)CAP理论:C(Consistency 数据一致性)A(Availability 服务可用性)P(Partition-tolerance 分区容错)不可能设计出满足三点的系统,已被证实。单体框架:CA系统,微服务:AP系统;

 

7)分布式事务:分阶段实现:第一阶段:将事务交给事务处理器TC,TC向所有参与事务的节点发送事务操作的准备,所有参与操作的节点进行执行,将Undo和Redo信息写进日志;第二阶段:收集所有操作的结果,若都成功就提交,否则回滚。若出现异常导致整个事务阻塞,降低数据库性能。

 

1、产生原因

​ 随着越来越多的用户参与,业务场景越来越复杂,传统的单体架构很难满足互联网技术的发展,主要体现在两方面:1)随着业务复杂度的提高,代码的可维护性、拓展性和可读性降低;2)维护系统的成本、修改系统的成本在提高。

 

2、微服务简介

​ 将单一程序开发成一个微服务,这些服务可以使用不同的编程语言以及数据存储技术,每一个微服务运行在自己的进程中,使用轻量级机制通信,并通过完全自动化部署机制来独立部署。

 

1)按业务划分成独立运行的程序,即服务单元(高度组件化的模块,服务之间没有任何耦合,有良好的扩展性和复用性,单个微服务内部高度耦合);

 

2)程序之间通过HTTP协议相互通信(数据格式:JSON、XML、Protobuf;Protobuf比JSON更轻量,JSON比XML更轻量,Protobuf序列化的数据为二进制,可读性差);

 

3)自动化部署(Docker容器,Jenkins自动化部署工具);

 

4)可以使用不同的编程语言和存储技术(C、C++、Java;关系型数据库MySQL,非关系型数据库MonGDB、Redis);

 

5)服务集中化管理(Eureka注册与发现服务;Zookeeper、Consul等服务集中管理管理框架);

 

6)微服务是一个分布式系统(集群部署的,很多计算机相互协作共同构成)。

 

3、微服务的优势

1)将复杂的问题简单化,实现小的业务,易于维护和更改;

 

2)极强的横向扩展能力:随着业务增加用户量增多可以继续细化;

 

3)微服务的单元是独立部署的,修改单个的功能对其他服务没有影响;

 

4)分布式提高了系统的负载能力。

 

4、微服务的不足

1)服务的划分:微服务具体要划分成多小的服务单元难以具体定义;

 

2)服务的部署:对每个微服务进行治理、监控和管理,在配置过程中考虑启动顺序和启动时机;

 

3)分布式事务:基于CAP理论,对数据一致性的处理,多采用两阶段/三阶段处理;

 

4)微服务的复杂度:构建、通信机制、测试;

 

5、微服务和SOA的关系

SOA是面向服务的框架,微服务是将服务组件化;

 

微服务是SOA的一种实现,比ESB(企业服务总线)实现的SOA更加轻便、敏捷和简单。

 

6、微服务的设计原则

软件设计应该渐进式发展,不应该一开始就设计成微服务框架,小的系统可以先设计成LAMP单体构架,在企业发展的过程中可以转换成微服务的框架。

 

增加效率的方法:数据库读写分离、加缓存、加负载均衡等。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/190492
推荐阅读
相关标签
  

闽ICP备14008679号