前言

越来越多的企业使用 SpringCloud 实现微服务架构设计。我们可以看到这样一种现象:不管是全新开发,还是系统重构,大家似乎都在争先恐后地使用微服务。对于一个Java开发人员来说,学习微服务相关知识大有裨益。

20年IT农民工分享SpringCloud微服务架构实战文档_java

本文将从架构设计、程序开发和运维部署三个层面,深入浅出地介绍如何开发一个大型电商平台,希望能够让大家学到自己想要学习的知识,不断提升自己的技术深度和广度,也希望能够得到大家的喜欢!!

目录

20年IT农民工分享SpringCloud微服务架构实战文档_开发语言_02

主要内容

第1章微服务架构与Spring Cloud;本章介绍了微服务架构的来龙去脉,说明了基于微服务的设计和开发,已经得到越来越多的企业和个人的认可,而以微服务架构为主流的技术也已迅速发展起来。

SpringCloud ,因为其丰富的工具套件、全面的设计,以及很好的兼容性,使它成为众多开发人员喜欢和热爱的一种开发工具,所以也将在更大的范围中流行起来。

所以,作为一个 Java 开发者,学习和掌握 Spring Cloud 的开发方法,不仅仅是一种“时尚”,更有可能成为一项优秀的看家本领。

朋友们,让我们一起努力吧,一起来学习 Spring Cloud !

20年IT农民工分享SpringCloud微服务架构实战文档_java_03

第2章高并发微服务架构设计;微服务架构设计风格本身就是一种高并发的机制。依靠云服务环境,我们可以把微服务使用的基础资源,通过自动化基础设施建设,提供成一种可伸缩、高并发、高可用的环境。同时,通过使用 Spring Cloud 工具套件和第三方库,充分保证微服务的高度可扩展性。不管是哪一种架构设计,系统的稳定性、健壮性和可靠性都缺一不可。

20年IT农民工分享SpringCloud微服务架构实战文档_架构设计_04

第3章大型电商平台设计实例;本章使用微服务架构设计的方法,构建了一个大型的电商服务应用平台。这个平台大体上由提供接口服务的 RESTAPI 微服务和提供人机交互操作界面的 WebUI 微服务两部分组成,并在此基础上,构建了商家管理后台、运营商管理后台和移动商城前台。

在后续章节中,我们将详细介绍各个实例项目的开发方法,以及相关微服务应用的使用演示。

20年IT农民工分享SpringCloud微服务架构实战文档_spring_05

第4章开发环境准备;本章我们为进行 Spring Cloud 的开发做了一些开发环境的准备工作和说明,并且使用 IDEA开发工具创建了第 pring Cloud 项目 。虽然这个项目很简单,但作为 个入门的指引己经足够了 在后续的章节中,我 将在这个项目的 础上, 添加更加复杂的设计和开发。

20年IT农民工分享SpringCloud微服务架构实战文档_微服务_06

第5章微服务治理;本章首先讲述了注册中心的创建,以及做服务的注册与配置。然后,以注册中 为基础,通过健康监控、服务告警、断路器仪表盘和链路跟踪等功能的实施,说明如何对微服务进行有效监控。同时,结合日志分析平台的使用,对所有运行的微服务应用进行全面而有效的泊理。

后续的微服务的开发和实施将在这个微服务治理环境的基础上进行,而涉及有关服务治理的引用和配置将不再做特别说明

20年IT农民工分享SpringCloud微服务架构实战文档_java_07

第6章类目管理微服务开发;本章介绍了电商平台的类目管理接口和 Web 类目管理后台两个微服务的开发实例,通过这个项目的开发和演示,我们清楚了微服务之间快速通信和相互调用的方法。在类目管理接口开发中,我们通过 Spring Data JPA 开发工具,了解了 DDD 开发方法在 Spring 开发框架中的工作原理和实现方法。通过类目管理接口的实现,我们将有状态的数据访问行为,转变成没有状态的接口服务。

下一章,我们将介绍另一种数据库开发工具 MyBa巾,体验不同的数据库开发工具在 Spring项目工程中的应用方法。

20年IT农民工分享SpringCloud微服务架构实战文档_架构设计_08

第7章库存管理与分布式文件系统;本章介绍了库存管理的微服务接口和一个相关的 Web 应用微服务的开发。在这个项目的开发过程中,我们使用了半自动的数据库开发框架 MyBatis ,体验了与使用 JPA 不同的开发实践。在生产应用中,读者可以根据实际情况选择使用。

同时,本章的 Web 应用开发也演示了使用分布式文件系统的方法,不管是使用 DFS ,还是使用 oss ,其设计思路和实现方法基本一致,所以我们只需掌握一种开发方法,就能够在实际应用中应用自如。

20年IT农民工分享SpringCloud微服务架构实战文档_架构设计_09

第8章海量订单系统微服务开发;本章我们使用 MongoDB 开发了一个可以支持海量数据的订单系统,并且使用 Spring5的反应式编程设计,实现了支持非阻塞异步调用的高并发微服务订单接口,所以这是一个高性能的订单微服务应用系统。有关反应式编程设计,由于其异步调用的特性,使得其只能支持无事务管理的数据库设计。而对于微服务设计来说,其本身就是一种分布式的应用,所以有关事务管理的设计,只能使用分布式的事务管理来实现。在本章订单状态变更所引起的事务管理实例中,我们使用消息队列实现了分布式事务管理中数据最终一致性的设计。

20年IT农民工分享SpringCloud微服务架构实战文档_java_10

第9章移动商城的设计和开发;本章使用前面章节设计的各种接口服务,设计并开发了 个移动端的商城。在这个设计中,演示了微服务接口的调用方法,同时,针对移动设备进行了 HS 的单页设计实践。在整个开发过程中,读者可以更加深刻地体会到微服务之间的接口调用是非常方便的 而使用 pringCloud 工具套件进行移动端应用的开发,同样是轻 级且令人感到愉快的。

20年IT农民工分享SpringCloud微服务架构实战文档_架构设计_11

第10章商家管理后台与SSO设计;本章通过商家权限体系和 sso 设计,构造了一个安全可靠的商家管理后台。在商家管理后台中,商家用户通过统一权限管理,可以使用在分布式环境中任何其他已经接入 sso 的微服务应用。商家管理后台设计以一种更加完善的方式,将各个分散开发的微服务应用组合成一个功能丰富的整体,充分体现了微服务架构设计的强大优势。

其中,商家权限体系设计,以访问资源为基础建立了三级菜单体系,并通过角色与资源的关系,将用户权限与菜单组成一个有机的整体。

商家的角色及其菜单的管理配置,必须由平台运营方进行操作。在 11 章的平台管理后台的开发中,将实现管理商家的权限配置的功能。

20年IT农民工分享SpringCloud微服务架构实战文档_微服务_12

第11章平台管理后台与商家菜单资源管理;本章主要实现了平台管理后台的访问控制设计、商家注册及其权限,以及菜单的配置和管理等方面的功能。其中,商家注册及其权限、菜单的配置和管理,都是通过调用商家服务的ST API 微服务实现的。实际上,在我们的微服务架构设计中, Web 微服务的开发都是通过调用 RestAPI 微服务实现的,当需要在平台管理后台中对电商平台的各个服务功能进行管理时,都可以通过调用各种微服务接口来实现。

有关微服务的开发至此告一段落,从第 12 章开始,我们将从运维的角度探讨微服务的部署及微服务运行环境的构建等方面的内容。

20年IT农民工分享SpringCloud微服务架构实战文档_java_13

第12章云服务环境与Docker部署工具;本章介绍了微服务应用发布环境的组建,以及基于 Docker 管理工具的应用部署的管理方法。从云服务环境的组建和应用部署的方法来看,我们可以有很多选择,前提是必须保证微服务运行环境 安全可靠性,然后再根据系统平台的规模选择 种切合实际的部署工具。一般来说,对于 个小型系统,使用 docker-compose 工具就可以了;如果是 个大型系统平台,则建议使用 ubemetes 管理工具。

20年IT农民工分享SpringCloud微服务架构实战文档_架构设计_14

第13章可扩展分布式数据库集群的搭建;本章介绍了在 CentOS 中安装 MySQL 的简易方法,并使用主从设计构建了分布式的数据库集群,搭建了一个高性能、可扩展的数据库集群体系,同时,使用分组的方式实现了高可用集群的设计。在数据库访问设计中,使用 OneProxy 中间件实现了可配置的读写分离调用方法,并结合分库分表功能提高了数据库的访问效率。最后,使用双机热备设计,为数据库代理中间件及其集群的使用提供更加安全可靠的有力保障。

通过本章对数据库集群设计的介绍,读者可深入地理解数据库集群的工作原理。如果使用云服务的数据库,则建议使用云服务供应商提供的分布式数据库,这样可以使性价比更高。

20年IT农民工分享SpringCloud微服务架构实战文档_开发语言_15

第14章高可用分布式文件系统的组建;本章使用开源的 FastDFS 搭建了一个高可用的分布式文件系统,并通过 Nginx 为文件的访问设置了负载均衡服务,从而为微服务应用提供一个高性能的文件服务器。

在完成安装并测试正常之后,即可在库存管理项目中配置分布式文件系统的链接地址,使用微服务与分布式文件系统进行联调。

20年IT农民工分享SpringCloud微服务架构实战文档_java_16

第15章使用Jenkins实现自动化构建;本章介绍了如何使用自动化构建工具 Jenkins 设计持续交付的工作流程,并以一个简单的实例演示了自动部署的实现过程。在该实例中,我们使用 Git 进行代码拉取、使用 Maven 进行程序打包、使用 Docker 进行镜像的创建和应用的更新与部署。从这个实例中可以看出 Jenkins强大的可扩展性。

通过对本章的学习,相信读者能够根据实际情况,建立 个完善的自动化基础设施,从而实现在微服务发布中集成测试和持续部署的自动化构建流程。

20年IT农民工分享SpringCloud微服务架构实战文档_spring_17

总结

本文不仅详细介绍了如何使用 Spring Cloud 工具套件进行微服务应用的开发,还介绍了如何与 ConsulDocker Kubemetes Jenkins 等结合使用 将开发的微服务应用以可扩展的方式在云端发布。

通过对本文的系统学习,读者可快速将所掌握的知识应用于实际工作中,提高自身的职业竞争力

本文的读者对象为广大 Java 开发者、系统架构师和系统运维人员。本文特别适合使用过 Spring 开源框架或具有一定 Spring 框架基础知识的读者阅读。