书记_《微服务架构与实践》

1、
(1)一层架构:表示、业务逻辑、数据访问交织在一起。
(2)二层架构:独立了数据访问,表示和业务逻辑交织在一起。如Java的JDBC、IO流,.NET的ADO.NET的推动。
(3)三层架构:表示层、业务逻辑层、数据访问层。
2、
(1)单块架构:功能集中、代码和数据中心化、一个发布包、应用程序部署后运行在同一进程。
(2)单块架构的挑战:维护成本增加。持续交付周期长。新人培养周期长。技术选型成本高。
3、
(1)微服务架构:提倡将单一应用程序划分成一组小的服务。每个服务运行在独立的进程中。服务与服务间采用轻量级的通信机制沟通。每个服务围绕具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境。应尽量避免统一的、集中式的服务管理机制。对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具进行构建。
(2)微服务架构中的每个服务,都是具有业务逻辑的,符合高内聚、低耦合以及单一职责原则的单元,不同服务通过管道的方式灵活组合,从而构建出庞大的系统。
(3)对于微服务架构中的每个服务而言,与其他服务高度解耦。只改变当前服务本身,就可以完成独立的测试、构建、部署。
4、
(1)静态语言:
优点:编译期语法检查,便于调试,类型安全性高。
缺点:需要更多的类型相关代码。
如:Java、C++。
(2)动态语言:
优点:灵活性高,运行时可以改变内存结构,无类型检查,无须写较多的类型相关代码。
缺点:无编译期语法检查,不方便调试。
如:JavaScript、Ruby、Python。
5、
(1)高内聚:模块内元素紧密结合。
(2)低耦合:模块间尽可能独立。
6、
(1)垂直扩展:提升单机处理能力。
两种方式:
增强单机硬件性能。如增强CPU、网卡、硬盘、内存设备。
增强单机架构性能。如使用Cache,减少IO;使用异步;使用无锁数据结构。
(2)水平扩展:增加服务器数量。
增加站点应用层(容器应用层)、服务层、数据层的服务器。
7、
(1)独立性:应用交付过程中,开发、测试以及部署的独立。
8、
(1)应用环境:开发和配置环境、测试环境、类生产环境(预生产环境)、生产环境。
(2)类生产环境:从生产环境不定期同步,保持和生产环境的设置、数据一致性,也是用于测试,它和测试环境最大的区别就是它和生产环境的同步性最高,几乎一样,有些测试,比如需要大数据量的,用这个环境测试看程序性能比用测试环境(一般情况下数据较少)会更准确。(不是必须的,有的公司没有)
9、
(1)精益创业(Learn Startup):分析建立最小化可实行产品(MInimum Viable Product)。
(2)敏捷开发:通过反馈找到正确演进方向。
(3)持续交付:快速、可靠、频繁的交付。
(4)云、虚拟化和基础设施自动化(Infrastructure As Code):简化基础设施、运行环境甚至软件的创建、配置。
(5)DevOps:打破开发和运维的壁垒。
10、
(1)1996年,Gartner提出面向服务架构(SOA)。
(2)SOA将功能相关的一组功能提供者组织在一起为消费者提供服务。2000年左右,ESB(Enterprise Service Bus)、WebService、SOAP等技术使SOA落地。
(3)SOA采用集中式服务架构。与SOA相比,微服务更灵活,强调独立测试、独立部署、独立运行,受到云计算、敏捷开发、DevOps、持续交付的推动。
11、
(1)微服务的本质:
1>服务作为组件;2>围绕业务组织团队;3>关注产品而非项目;4>技术多样性;5>业务数据独立;6>基础设施自动化;7>演进化。
12、
服务描述文件:(P125)
服务介绍、维护者信息、服务可用期(SLA,Service Level Agreements)、服务运行环境、开发、测试、构建、部署、监控和告警。
13、
(1)RPC(Remote Procedure Call,远程过程调用):
客户端调用本地代理(Stub)和存根(Skeleton),通知服务端方法和参数;服务端执行后返回应答。屏蔽通信双方底层调用细节。
(2)RMI(远程方法调用):
RMI是RPC远程方法调用的一种面向对象的实现,提供对象远程访问的功能。
如Java RMI,屏蔽了对象的序列化和反序列化,客户端和服务端使用相同的接口,接口的实现只在服务端,限制客户端和服务端采用Java。
Java RMI:https://www.cnblogs.com/wxisme/p/5296441.html。
Java RPC:https://blog.csdn.net/u010805542/article/details/83970611。
14、
(1)REST(Representational State Transfer,表述性状态传递):
从语义层面将响应结果定义为资源,使用HTTP标准动词映射为对资源的操作。
(2)REST的四个关键部分:
资源(信息实体)、表述(资源格式)、状态转移(资源属性改变)、统一接口(GET、POST、PUT、DELETE,对应查、增、改、删)。
(3)由于HTTP无状态性,使用REST,能够有效保持服务/应用的无状态性,利于水平伸缩。无状态性,即无资源属性。
(4)HAL(Hypertext Application Language,超文本应用语言):(P155)
本质为轻量级超文本应用描述协议,实现基于REST,提供标准化服务接口,有效解决REST资源结构标准化和资源链接定义。
在HAL中,任何服务器端的响应都被定义成资源。在每个资源中,分成三个部分:状态(资源属性)、链接(资源相关的链接)、子资源(资源内部嵌套资源)。
(5)HAL浏览器能用可视化方式展示服务提供的接口。
15、
RPC和REST都是分布式节点间通信的实现方式。采用客户端/服务端的模式。RPC是同步通信,REST是同步通信或异步通信。
16、
(1)消息队列:(P161)
处理节点之间的异步通信。消息发布和消费是异步的。
发布消息的一端称为发布者,接收消息的一端称为消费者。通过消息队列,发布者将消息放入队列中保存,然后消费者会在将来某个时间点获取消息并处理。消息队列将消息的发布者和消费者不需要同时交互,从而达到异步通信的效果。
(2)消息队列核心部分:
数据持久、排队标准、安全策略、清理策略、处理通知。
(3)消息队列模式:
拉模式(Pull Mode)(消费者拉取消息):消费者定期检查队列上的消息,匹配则拉取并处理。
推模式(Push Mode)(发布者推送消息):发布者将消息添加到队列中时,通知对应的消费者,这些消费者也称订阅者。
(4)业界常用消息队列:
RabbitMQ、ActiveMQ、Kafka、ZeroMQ。
17、
后台任务处理系统:
由任务、队列、执行器、定时器构成。定时周期到了,执行器就从队列中获取任务,执行任务。

 

你可能感兴趣的:(架构,书记)