两年前,我与我的一些同事谈起徼服务时,有很多人对微服务还不甚了解,而部分有所了解的人对其持观望的态度,现在,微服务架构已经成为一家公司技术是否先进、是否具有规模发展的标杆配置。
有人认为微服务也不是一个新东西,它其实就是一种分布式的架构设计。确实,微服务就是一种分布式架构的设计方法。但是,在微服务概念还没有出现之前,为什么分布式这个概念并不能引起人们的强烈关注呢﹖甚至现在也一样,如果说自己擅长分布式架构设计,可能没有多少人理你,但如果说自己精于微服务架构设计,情况那就大不一样了。
微服务可以缓解程序员的压力,提高开发效率,加速迭代的过程,是最适合敏捷开发的方法。另外,微服务能够快速响应需求的变化、能够分布式发布,最适合于云计算部署、实现弹性伸缩控制,以及满足无限扩展的业务需求,所以,微服务能够创建一个“打不垮”的系统。
内容简介
本文档从架构设计、程序开发和运维部署三个层面,深入浅出地介绍了如何开发一个大型电商平台。本书不仅详细介绍了如何使用Spring Cloud 工具套件进行微服务应用的开发,还介绍了如何与Consul、Docker、Kubernetes和Jenkins等结合使用,将开发的微服务应用以可扩展的方式在云端发布。通过对本书的系统学习,读者可快速将所掌握的知识应用于实际工作中,提高自身的职业竞争力。
本文档的读者对象为广大Java开发者、系统架构师和系统运维人员。本书特别适合使用过Spring开源框架或具有一定Spring框架基础知识的读者阅读。
本书的内容和结构将在保持原书风格的基础上进行全面的更新和升级,主要体现在以下三个方面。
- 本书仍以电商平台作为案例,但使用的代码已经根据官方版本进行全面升级,并且对项目结构进行了全面的精简化处理,使其更适合实际的开发习惯。
- 在数据库使用方面,从原来单一化使用JPA和MySQL,转变为多样化的设计,以适应不同业务场景的需求。同时,增加了MyBatis开发框架的使用和 MongoDB 的开发案例等章节。
- 在运维部署部分中,不仅增加了使用公有云的设计,而且对于部署工具,在使用Docker容器引擎的基础上,介绍了一些高级工具,如 Docker Swarm部署工具、Kubernetes 工具的使用案例。
内容展示
本书由三部分组成,结构如下所示:
第一部分架构设计
第1章微服务架构与Spring Cloud
第2章︰高并发微服务架构设计
作为一个IT从业人员,我们经常会碰到类似于下面的一些问题
- :单个项目巨大而沉重,难以维护。
- 系统稳定性得不到更有效的保证。
- 怎样才能持续地提升系统的性能。
- 怎样才能快速地响应需求的变更,并且系统更新不会引起任何抖动。
- 怎样才能更好地适应系统规模化的扩张。
第3章大型电商平台设计实例
本章我们将使用微服务架构风格设计一个大型电商平台,这个平台将以SaaS方式提供一个类似于S2B2C的服务。
电商平台是一个大众化的应用平台,读者对它的功能都比较熟悉,本章通过电商平台的微服务架构设计,帮助读者深入理解微服务设计和开发在实际中的具体使用。
第二部分程序开发
第4章开发环境准备
有关Java开发环境的准备,除JDK和IDE外,还需要准备另外一些工具或服务,以方便进行代码管理、开发调试等一些常用操作,具体如下:
- Java SDK
- IntelliJ IDEAoGit
- oConsul
- MySQL及其客户端
- MongoDB及其客户端Redis
- RabbitMQ
第5章微服务治理
Spring Cloud 工具套件为微服务治理提供了全面的技术支持。这些治理工具主要包括服务的注册与发现、负载均衡管理、动态路由、服务降级和故障转移、链路跟踪、服务监控等。微服务治理的主要功能组件如下:
- 注册管理服务组件 Eureka,提供服务注册和发现的功能。
- 负载均衡服务组件Ribbon,提供负载均衡调度管理的功能。
- 边缘代理服务组件Zuul,提供网关服务和动态路由的功能。
- 断路器组件Hystrix,提供容错机制、服务降级、故障转移等功能。
- 聚合服务事件流组件Turbine,可用来监控集群中服务的运行情况。
- 日志收集组件Sleuth,通过日志收集提供对服务间调用进行跟踪管理的功能。
- 配置管理服务组件Config,提供统一的配置管理服务功能。
第6章类目管理微服务开发
从本章开始,我们将根据电商平台的各个实例项目进行具体的微服务开发,主要包括类目管理、库存管理、订单管理等。在这几个实例项目中,我们将根据项目本身的特点,使用不同的数据库进行开发。对于类目管理来说,我们将使用二级分类设计,即数据实体之间存在一定的关联关系,因此最好的选择就是使用Spring Data JPA进行开发。Spring Data JPA是Spring Boot开发框架中一个默认推荐使用的数据库开发方法,同时,JPA也是领域驱动设计的一种具体应用。
第7章库存管理与分布式文件系统
在电商平台的库存管理系统设计中,将涉及商品和本地图库的管理,这里我们将使用另一种数据开发框架 MyBatis进行数据库访问方面的设计,还将实现与分布式文件系统的对接使用。
本章实例的项目工程是一个商品微服务项目goods-microservice,可以从本书提供的源代码中下载,或者在IDEA中通过Git检出:
检出代码后,请获取本实例使用的分支V2.1。本项目包含以下几个模块:
- goods-object:公共对象设计。
- goods-restapi:库存管理微服务API应用。
- goods-web:库存管理PC端Web应用。
第8章海量订单系统微服务开发
订单系统是电商平台中一个非常重要的组成部分,而且它还是一个具有巨大流量和高并发访问的系统,与订单相关的服务涉及库存、支付、物流等。在设计订单系统时,我们选择使用支持海量数据的NoSQL数据库MongoDB,配合使用反应式的Spring Data MongoDB,实现高并发设计。
本章实例项目代码可从本书源代码中下载,在 IDEA中检出,或通过页面直接下载使用。检出后请获取分支版本V2.1。在这个分支中包含以下几个模块:
- order-object:订单公共对象设计。
- order-restapi:订单微服务接口应用设计。
- order-web:订单后台管理应用设计。
第9章移动商城的设计和开发
移动商城是电商平台的重要组成部分,它面向终端用户,为用户提供商品浏览、选购、订单查询和个人信息管理等服务。
第10章商家管理后台与SSO设计
第11章平台管理后台与商家菜单资源管理
平台管理后台是为电商平台的运营方提供服务的,它主要包含商家管理和一些公共配置管理的功能。在商家管理的设计中,包括商家的注册、审核、商家用户的权限管理和菜单资源管理等功能。除一些公共管理功能的设计外,平台管理后台本身也有安全控制管理的设计。
第三部分运维部署
第12章云服务环境与Docker部署工具
第13章可扩展分布式数据库集群的搭建
第14章高可用分布式文件系统的组建
传统的单机版Web应用的文件管理方式,例如图片和视频文件的上传和使用等,大多是将文件存储在服务器本地,但这种管理方式无法应用在微服务应用中。一方面,微服务应用发布在分布式环境中,随时随地都可以进行多副本的部署,所以它的媒体文件必须存放在一个统一的地方。另一方面,建立一个独立而高效的文件系统,也是高可用、高性能应用平台的一个有机组成部分。
第15章使用Jenkins 实现自动化构建
一个大型平台的微服务架构设计通常会产生很多项目工程,因此会有很多服务和应用需要部署,并且需要不断地迭代和更新,这是一个庞大的工程,所以我们需要借助自动化工具,实现各个微服务工程的CICD工作流程。
这份《Spring Cloud微服务架构实战》内容实在是太多,需要获取这份资料的小伙伴可以直接一键三连后私信(学习)即可免费获取!