微服务分布式构架开发实战 - (EPUB全文下载)
文件大小:0.21 mb。
文件格式:epub 格式。
书籍内容:
微服务分布式构架开发实战
第1章 微服务介绍
第2章 模块拆分
第3章 Spring Boot
第4章 Dubbo
第5章 Spring Cloud
第6章 数据持久化
第7章 表单验证
第8章 定时任务
第9章 分布式会话
第10章 消息队列
第11章 构建Web应用
第12章 异常处理
第13章 安全认证
第14章 日志管理
第15章 热部署
第16章 接口文档管理
第17章 Nexus私库
第18章 发布系统
第19章 分布式架构总结
欢迎来到异步社区!
第1章 微服务介绍
1.1 什么是微服务架构
1.2 垂直应用与微服务
1.3 实现一个最简单的微服务框架
1.4 主流微服务框架介绍
随着用户需求个性化、产品生命周期变短,微服务架构是未来软件架构朝着灵活性、扩展性、伸缩性以及高可用性发展的必然方向。这里主要将对比传统的垂直应用与分布式微服务应用之间的区别。
1.1 什么是微服务架构
微服务是一种软件架构风格,目标是将一个复杂的应用拆分成多个服务模块,每个模块专注单一业务功能对外提供服务,并可以独立编译及部署,同时各模块间互相通信彼此协作,组合为整体对外提供完整服务。
微服务架构就像是活字印刷术,每个文字模都可以看成是一个微服务,它可以独立地提供印刷服务,又可以将模块之间组合,最终形成一篇完整文章提供更为复杂的印刷服务。
由于每个模块都独立部署,各自拥有互不干扰的内存空间,模块之间无法直接调用,所以需要借助RPC(远程过程调用协议)或HTTP协议让各个模块之间传递通信报文及交换数据,实现远程调用,整个通信管理的过程也是微服务架构重要的组成部分。
1.2 垂直应用与微服务
MVC模式构建的垂直应用非常适合项目初期,使用其能够方便地进行开发、部署、测试,但随着业务的发展与访问量的增加,垂直应用的问题也随之暴露出来,而微服务架构可以很好地解决这些问题。
代码维护
垂直应用里,大部分逻辑都部署在一个集中化、单一的环境或服务器中运行。垂直应用程序通常很大,由一个大型团队或多个团队维护。庞大的代码库可能给希望熟悉代码的开发人员增加学习成本,还会让应用程序开发过程中使用的开发环境工具和运行容器不堪重负,最终导致开发效率降低,可能会阻止对执行更改的尝试。
微服务架构将这个庞大并且复杂的应用拆分成多个逻辑简单且独立的小应用,每个小应用交由不同的团队或开发人员维护,彼此之间互不干扰,通过标准接口互相通信。对于希望熟悉代码的开发人员来说只需掌握他所负责的应用即可,这样做的好处是简单、快速、逻辑清晰。
部署
垂直应用需要处理一个庞大的应用程序,编译、部署需要花费很长时间,一个小的修改就可能导致重新构建整个项目。
微服务架构中对其中某一个服务进行修改,只需重新编译、部署被改动的服务模块。
资源控制
垂直应用里,当请求量过大导致单台服务器无法支撑时,一般会将垂直应用部署在多台服务器形成服务集群,并通过反向代理实现负载均衡。集群中的每个服务必须部署完整的应用,但在实际业务需求中仅有部分功能使用频繁,但这种架构必须为不常用的功能分配计算资源。
微服务将提供功能的各服务拆分为多个服务模块,它具有天生的集群属性,能够轻松地根据用量部署。
例如系统中的消息功能使用频率占了整个系统的90%,而密码找回功能则只占到2%。为了分解消息功能的压力,以传统负载均衡的方式进行集群化时,每个服务必须为使用量只有2%的密码找回功能分配资源,这无疑造成了浪费。
在微服务架构中,消息功能使用率占据90%,则将消息模块多部署几个实例形成集群,而密码找回功能所在的用户模块只部署一个就可以了。
稳定
垂直应用中如果有一个小的问题,就可能使整个系统崩溃。
微服务所拆分出的各个模块中,由于模块之间的耦合度很低,当发生问题时影响范围被固定在该模块本身,整个系统依然健全。
1.3 实现一个最简单的微服务框架
基本工作流程如下。
① 客户端发起调用请求。
② 将调用的内容序列化后通过网络发给服务端。
③ 服务端接收到调用请求,执行具体服务并获得结果。
④ 将结果序列化后通过网络返回给客户端。
1.3.1 公共接口
在发起远程调用时,需要基于接口(Interface)来约定客户端与服务端所调用服务的具体内容。为了方便管理依赖关系,这里使用Maven构建应用并编写一些接口,以提供给客户端与服务端使用。
当然也可以使用普通的Java应用来实现此简单微服务框架,只需将该应用编译后的jar包提供给后续的服务端与客户端即可。
Maven 参数
groupId:org.book
artifactId:rpc-interface
version:0.0.1-SNAPSHOT
packaging:jar
编写接口。
public interface HelloService {
public String hello(String name);
}
1.3.2 服务端
新建用于提供服务的Maven应用,并引入刚编写的接口应用依赖。
Maven 参数
groupId:org.book
artifactId:rpc-server
version:0.0.1-SNAPSHOT
packaging:jar
① 在pom.xml文件中引入依赖。
② 实现服务接口。
public class HelloServiceImple implements HelloService {
public String hello(String name) {
System.out.println("收到消息:" + name);
r ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » 微服务分布式构架开发实战 - (EPUB全文下载)