《微服务架构与实践》前三章 读书笔记

  本书内容类似与《从零开始学微服务》所讲的内容,都是从为什么要做微服务,什么是微服务,怎么做微服务三个方面讲述的。其中怎么做微服务又是从搭建微服务框架,微服务监控,微服务跟踪和微服务治理四个方面讲述。当然与《从零开始学微服务》不同的是讲述了具体的实战。

本书先讲了单体应用及单体应用的架构。单体应用的主要架构就是三层应用架构:表示层;业务逻辑层,存储层。

表示层:指用户界面层。包括用户交互的部分。

业务逻辑层:是业务逻辑计算和业务逻辑处理的部分。

存储层:也是数据访问层。程序产生的数据通过一些机制被有效的保存并以后能重复使用。存储层主要指这里说的一些机制,而非数据实际存储介质。如数据库,文件之类的。强调的是原始数据的操作,而非存储介质本身。

单体架构应用:将功能,代码和数据中心化,统一一个发布包并部署在同一个进程的应用程序。

优势:

易于开发,测试,部署和水平扩展

不足:

1.维护成本大。想象一下一个系统当代码量达到几十万行时,要新增加一个功能或修改其中的bug。不熟悉的人员,是多么头大的事情。

2.持续交付周期长。当代码量多,开发人员增多时,开发,单元测试,构建发布包等等都需要很长的时间,中间有一个搞错了,又得重新测试,重新构建。

3.新人培养周期长。一个新人要熟悉几十万行的代码,周期肯定很长啦。

4.可扩展性差。其中可扩展性分垂直扩展和水平扩展。

  垂直扩展:业务功能从上层到底层的扩展。例如数据库层增加mssql的支持。网络层增加AFNNetworking的适配。

  水平扩展:在一个集群中,新增加节点满足系统扩展需求。显然作为单体架构的应用都部署在一个服务器,要新增加节点是很麻烦的事情。

微服务架构

搭建微服务架构:

1.单一职责:一个对象应该只有一个发生变化的原因,如果一个对象可被多个原因改变,那么久说明这个对象承担了多个职责,单一职责最好的例子:UNIX的设计

2.轻量级通信:与语言无关,与平台无关的交互方式。

  其中通讯格式:XML 或JSON

  协议:HTTP 协议

3.独立性:在交互过程中开发,测试和部署都是独立的。

微服务与SOA的区别

SOA :

1.企业级,自顶而下的开展实施

2.服务由多个子系统组成,粒度大

3.企业服务总线,集中式服务架构

4.集成方式复杂

5.单块架构系统,相互依赖,部署复杂。

微服务:

1.团队级,自底而上开展实施

2.一个系统被拆分成多个服务,粒度细。

3.无集中式总线,松散的服务架构

4.集成方式简单(HTTP协议)

5.服务能独立部署。

微服务的本质:

1.服务作为组件。一个服务一个组件,相对独立。

2.围绕业务组织团队:以业务为核心,按业务能力来组织团队,团队中的成员具有多样性的技能。

3.关注产品而非项目:

何谓项目,项目立项开始,从各个部门抽取相关人员组成一个团队,设定一个时间,团队在规定的时间内完成,完成后项目解散,资源释放。

何谓产品:让整个团队负责整个服务的生命周期。You build it and you run it

4.技术多样性:由于相对独立,不同的服务可以选择不同技术方案。

5.业务数据独立:由于服务独立,即数据也是独立的,不影响其他部分。

6.基础设施自动化:每个服务都是独立单元,独立部署。在大量服务情况下,就要求自动化测试,自动化部署。

7.演进式架构:拥抱变化,尝试改变,获取反馈,调整方式。不断以这样的迭代。

微服务的不足:

1.分布式系统的复杂度: 从性能,可靠性,异步,数据一致性,工具五个方面增加了复杂度。

2.运维成本:从配置,部署,监控和告警,日志收集 四个方面考虑

3.部署自动化

4.DevOps与组织架构

5.服务间的依赖测试和管理

结束:从第三章开始就实战篇,如何构建第一个微服务,构建Docker容器,部署Docker容器等等  按微服务架构步骤一步一步的实例讲操作。没有写笔记了。

你可能感兴趣的:(《微服务架构与实践》前三章 读书笔记)