微服务简介

第一章、微服务简介

名词解释:

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单体构架,在企业发展的过程中可以转换成微服务的框架。

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

读了方志鹏老师的《深入理解Spring Cloud与微服务构建》一书有感,这里只是简单的做了下总结以供自己后续学习。对于本记录若发现错误还请指出,若有疑问,也欢迎前来交流,qq:1164266197 Docen。

posted @ 2019-04-06 21:57  子楚  阅读(384)  评论(0编辑  收藏  举报