阿里大牛教你如何用 Dubbox+SpringBoot+Docker 架构,实现双 11 项目
前言
本篇围绕秒杀抢购应用场景,对当下流行的 Dubbox+ Spring Boot+Docker 微服务架构解决方案进行讲解。主要内容包括微服务架构介绍、Dubbox 原理及运用、使用 Spring Boot 实现微服务、"使用 ActiveMQ+Redis 承载高并发流量、使用 ActiveMQ 实现分布式事务、分布式下的第三方接入等。
本篇以项目为驱动,引领读者对相关技术进行实践性学习。同时为了提升读者对相关技术的实际运用能力,本篇将实际开发经验注入到整个项目开发周期中,使用目前较为流行的 Dubbox+ Springboot+Docker 微服务架构实现“双 11”抢购项目。
Dubbo 架构
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务运行容器。
为什么使用 Dubbox 而不是 Dubbo
Dubbo 是阿里开源的 RPC 服务调用框架,已经 3 年没有维护了,而当当网开源的 Dubbox 在保证 Dubbo 原有功能的基础上做了一系列优化。
使用 Dubbox 的好处
支持 REST 风格远程调用(HTTP + JSON/XML):基于非常成熟的 JBoss RestEasy 框架,在 dubbo 中实现了 REST 风格(HTTP + JSON/XML)的远程调用,以显著简化企业内部的跨语言交互,同时显著简化企业对外的 Open API、无线 API 甚至 AJAX 服务端等等的开发。事实上,这个 REST 调用也使得 Dubbo 可以对当今特别流行的“微服务”架构提供基础性支持。 另外,REST 调用也达到了比较高的性能,在基准测试下,HTTP + JSON 与 Dubbo 2.x 默认的 RPC 协议(即 TCP + Hessian2 二进制序列化)之间只有 1.5 倍左右的差距。
支持基于 Kryo 和 FST 的 Java 高效序列化实现:基于当今比较知名的 Kryo 和 FST 高性能序列化库,为 Dubbo 默认的 RPC 协议添加新的序列化实现,并优化调整了其序列化体系,比较显著的提高了 Dubbo RPC 的性能。
支持基于 Jackson 的 JSON 序列化:基于业界应用最广泛的 Jackson 序列化库,为 Dubbo 默认的 RPC 协议添加新的 JSON 序列化实现。
支持基于嵌入式 Tomcat 的 HTTP remoting 体系:基于嵌入式 tomcat 实现 dubbo 的 HTTP remoting 体系(即 dubbo-remoting-http),用以逐步取代 Dubbo 中旧版本的嵌入式 Jetty,可以显著的提高 REST 等的远程调用性能,并将 Servlet API 的支持从 2.5 升级到 3.1。(注:除了 REST,dubbo 中的 WebServices、Hessian、HTTP Invoker 等协议都基于这个 HTTP remoting 体系)。
升级 Spring:将 dubbo 中 Spring 由 2.x 升级到目前最常用的 3.x 版本,减少版本冲突带来的麻烦。
升级 ZooKeeper 客户端:将 dubbo 中的 zookeeper 客户端升级到最新的版本,以修正老版本中包含的 bug。
支持完全基于 Java 代码的 Dubbo 配置:基于 Spring 的 Java Config,实现完全无 XML 的纯 Java 代码方式来配置 dubbo
调整 Demo 应用:暂时将 dubbo 的 demo 应用调整并改写以主要演示 REST 功能、Dubbo 协议的新序列化方式、基于 Java 代码的 Spring 配置等等。
注:Dubbox 和 Dubbo 2.X 是兼容的,没有改变 Dubbo 的任何已有的功能和配置方式(除了升级了 Spring 之类的版本)
Spring Boot 特点
1. 创建独立的 Spring 应用程序
2. 嵌入的 Tomcat,无需部署 WAR 文件
3. 简化 Maven 配置
4. 自动配置 Spring
5. 提供生产就绪型功能,如指标,健康检查和外部配置
6. 绝对没有代码生成和对 XML 没有要求配置
docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker 架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
本篇内容主要分为 8 章,由于细节内容过多,所以小编只把部分知识点截图出来粗略的介绍一下,每个小节都会有更加细化的内容。
欢迎进入 Dubbox 微服务世界,本篇重点介绍基于 Dubbox 的分布式应用开发。全篇以秒杀抢购实际应用场景为例,通过解决方案形式的讲授,用业务来驱动技术学习。
第 1 章:架构设计。本章详细讲解了秒杀抢购的应用场景并对该应用场景进行深度剖析。通过业务分析,提出相应的业务级解决方案及系统级解决方案,并规划出技术栈的实现重点和难点。最后基于秒杀抢购的实际业务规划出“双 11 ”抢购项目的业务架构、应用架构、技术架构及部署架构。
第 2 章:微服务架构。本章从行业发展讲起,通过罗列行业发展中常见的软件架构模式引出互联网企业应用中目前最流行的微服务架构。针对微服务架构做深入探讨,并基于微服务架构对“双 11”抢购项目进行应用拆分。
第 3 章:Docker 环境搭建。本章从 Docker 的实际操作讲起,在操作中讲解 Docker 的运行原理,包括对 Docker 镜像、容器及可视化工具的讲解。最后以“双 11”抢购项目为例,快速搭建该项目开发所需的 Docker 环境。
第 4 章: Spring Boot 初体验。本章首先介绍 Spring Boot 的定义和作用,接下来通过对 SpringBoot 框架的搭建和使用来讲解 SpringBoot 的原理和实践细节。
第 5 章:使用 Dubbox+Spring Boot 搭建微服务架构。本章首先介绍 Dubbox 的相关概念,搭建 Dubbox 的运行环境,并基于 Dubbox+Spring Boot 实现提供者——消费者的微服务架构简单示例。最后基于 Dubbox+Spring Boot 实现“双 11”抢购项目微服务架构的搭建。
第 6 章:基于 Redis+ActiveMQ 实现高并发访问。本章包含三部分内容:分布式锁、消息队列应用及分布式事务。首先以“双 11” 抢购项目的实际开发问题为驱动,引出分布式锁的概念,并基于系统性能优化提出消息队列的概念,最后结合消息队列及分布式锁实现高并发环境下的抢购业务和分布式事务。
第 7 章:分布式下的第三方接入。本章包含微信登录、微信支付、支付宝支付三部分内容。均采用实操性的讲解方式,加深读者对原理的学习理解。
第 8 章:高并发测试。本章首先介绍高并发的相关概念和常见的高并发测试软件。重点讲解 JMeter 的安装、配置、运行及生成报告四部分内容,通过并发测试报告,验证并有效地保证了该项目在抢购并发操作”下的关键业务实现。
需要本【微服务实战:Dubbox+Spring Boot+Docker】技术文档的小伙伴,点击这里 即可获取啦!!!
评论