两年前,我与我的一些同事谈起徼服务时,有很多人对微服务还不甚了解,而部分有所了解的人对其持观望的态度,现在,微服务架构已经成为一家公司技术是否先进、是否具有规模发展的标杆配置。
有人认为微服务也不是一个新东西,它其实就是一种分布式的架构设计。确实,微服务就是一种分布式架构的设计方法。但是,在微服务概念还没有出现之前,为什么分布式这个概念并不能引起人们的强烈关注呢﹖甚至现在也一样,如果说自己擅长分布式架构设计,可能没有多少人理你,但如果说自己精于微服务架构设计,情况那就大不一样了。
微服务可以缓解程序员的压力,提高开发效率,加速迭代的过程,是最适合敏捷开发的方法。另外,微服务能够快速响应需求的变化、能够分布式发布,最适合于云计算部署、实现弹性伸缩控制,以及满足无限扩展的业务需求,所以,微服务能够创建一个“打不垮”的系统。
本文档从架构设计、程序开发和运维部署三个层面,深入浅出地介绍了如何开发一个大型电商平台。本书不仅详细介绍了如何使用 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。在这个分支中包含以下几个模块:
第 9 章移动商城的设计和开发
移动商城是电商平台的重要组成部分,它面向终端用户,为用户提供商品浏览、选购、订单查询和个人信息管理等服务。
第 10 章商家管理后台与 SSO 设计
第 11 章平台管理后台与商家菜单资源管理
平台管理后台是为电商平台的运营方提供服务的,它主要包含商家管理和一些公共配置管理的功能。在商家管理的设计中,包括商家的注册、审核、商家用户的权限管理和菜单资源管理等功能。除一些公共管理功能的设计外,平台管理后台本身也有安全控制管理的设计。
第 12 章云服务环境与 Docker 部署工具
第 13 章可扩展分布式数据库集群的搭建
第 14 章高可用分布式文件系统的组建
传统的单机版 Web 应用的文件管理方式,例如图片和视频文件的上传和使用等,大多是将文件存储在服务器本地,但这种管理方式无法应用在微服务应用中。一方面,微服务应用发布在分布式环境中,随时随地都可以进行多副本的部署,所以它的媒体文件必须存放在一个统一的地方。另一方面,建立一个独立而高效的文件系统,也是高可用、高性能应用平台的一个有机组成部分。
第 15 章使用 Jenkins 实现自动化构建
一个大型平台的微服务架构设计通常会产生很多项目工程,因此会有很多服务和应用需要部署,并且需要不断地迭代和更新,这是一个庞大的工程,所以我们需要借助自动化工具,实现各个微服务工程的 CICD 工作流程。
最后
为大家整理了 Java 核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯等面试题+Spring 源码合集+Java 架构实战电子书供大家学习!需要这份资料的,点击关注,私信我【333】即可获取,或者评论区留下脚印【我爱学习】即可领取