当前位置: 首页 > news >正文

京东技术专家首推:Spring 微服务架构设计,GitHub 星标 128K

前言

本书提供了实现大型响应式微服务的实用方法和指导原则,并通过示例全面 讲解如何构建微服务。本书深入介绍了 Spring Boot、Spring Cloud、 Docker、Mesos 和 Marathon,还会教授如何用 Spring Boot 部署自治服务,而 无须使用重量级应用服务器,并介绍 Spring Cloud 框架的各项能力、如何使 用 Docker 实现容器化,以及如何使用 Mesos 和 Marathon 抽象出计算资源和控制 整个集群。

从目录看起

由于全文内容过多总共四百多页篇幅过多,没法全部给大家展示出来,在这里便给大家展示部分内容【Spring 微服务架构设计原文档见文末】

第 1 章,微服务揭秘

本章通过一些实例介绍了微服务的基本原理。 本章介绍了从传统单体应用到微服务架构的演进过程、现代应用架构的一些 原则和思维方式上的转变,还总结了大多数成功的微服务项目实现的共同特 征,最后讨论了微服务架构的优势。

下一章会分析微服务架构和其他架构风格之间的联系,还会介绍微服务的常 见用例。

第 2 章,相关架构风格和用例

本章介绍了微服务架构和其他一些流行的架构风格之间的关系。 本章首先介绍了微服务与 SOA 和十二要素应用的关系,然后分析了微服务架构 和其他架构(比如无服务器计算架构和 Lambda 架构)之间的联系,还介绍了 微服务与云计算以及 DevOps 结合使用的好处,随后分析了一些来自不同行业 并成功采用微服务的企业的案例,最后罗列了一些比较成熟的微服务框架。

为了更好地说明本章所讲的内容,下一章会开发一些微服务实例。

第 3 章,用 Spring Boot 构建微服务

本章介绍了 Spring Boot 及其构建生产就绪微服务应用的关键特性。 本章通过比较前几代 Web 应用,说明了 Spring Boot 有助于开发人员开发可用 的微服务。然后介绍了基于 HTTP 和基于消息的异步响应式微服务,并通过实 例研究了如何实现微服务所要求的一些关键能力,比如安全性、HATEOAS 和跨 域,等等。本章还介绍了 Spring Boot Actuator 如何帮助运维团队、如何定 制功能满足需求,以及微服务 API 文档化。最后将本章所讲知识融入了完整的 示例。

下一章将放缓脚步,通过常见实践来解析微服务项目。

第 4 章,应用微服务概念

本章介绍了如何处理微服务开发中的一些实际场景。 首先介绍了多种可选方案和设计模式,它们可用于解决常见的微服务问题; 然后讨论了开发大型微服务系统时面临的一系列挑战,以及如何有效应对。

下一章将建立一个微服务的能力成熟度参考模型。

第 5 章,微服务能力模型

本章受到了业界成功的微服务项目实现的启发,基于最佳实践、常用模式和 设计准则,建立了一个与技术和工具无关的微服务能力模型。该能力模型有 助于组织思考自己的微服务实践和了解采用微服务之前需要考虑的方方面面。

本章论述了该能力模型的各项能力,介绍了这些能力对微服务实现的重要 性,还讨论了支撑这些能力的各种可选技术方案,最后研究了组织采用微服 务的成熟度模型。

下一章以一个使用微服务架构的实际问题和模型为例,介绍如何将所讲内容 应用于实际项目。

第 6 章,微服务演进案例研究

本章介绍了如何用微服务架构来处理实际用例。 本章研究了在现实世界中从单体应用向微服务演进的不同阶段,也评估了迁 移单体应用的多种方式的利弊和障碍,最后讲解了对 BrownField 航空公司的 应用进行端到端的微服务设计的过程,还验证了设计和实现成熟微服务的过 程。

下一章将介绍如何通过 Spring Cloud 项目将开发好的 BrownField 航空公司 PSS 微服务转型为互联网级的部署。

第 7 章,用 Spring Cloud 组件扩展微服务

本章介绍了如何利用 Spring Cloud 项目对符合十二要素原则的 Spring Boot 微 服务进行扩展,并在上一章开发的 BrownField 航空公司 PSS 微服务项目上进行 了实践。 本章介绍了用于外部化微服务配置的 Spring 配置服务器,以及如何部署配置 服务的高可用集群,也介绍了用于负载均衡、动态服务注册和发现的 Eureka 服务器。然后通过实现 Zuul 代理,探究了 API 网关的实现。最后使用 Spring Cloud Streams 实现了响应式微服务集成。 BrownField 航空公司的 PSS 微服务系统已经实现互联网级部署了。

下一章会讨 论 Spring Cloud 的其他组件,比如 Hyterix 和 Sleuth 等。

第 8 章,微服务的日志管理和监控

本章介绍了实现互联网级微服务架构时在日志和监控方面的挑战。 本章探讨了集中式日志管理的各种方案,也介绍了如何使用 Elasticsearch、 Logstash 和 Kibana(ELK)定制集中式日志管理方案。为了说明分布式追踪, 我们用 Spring Cloud Sleuth 升级了 BrownField 航空公司的微服务。 本章后半部分深入研究了微服务监控方案所需的各项能力和各种监控方式, 随后介绍了一些监控微服务的工具。 为了监控服务通信中出现的延迟和故障,我们用 Spring Cloud Hystrix 和 Turbine 增强了 BrownField 航空公司的微服务,还演示了在系统发生故障时如 何使用断路器模式来退回到备用服务。 最后讲到了数据湖的重要性以及如何在微服务的上下文中集成数据湖架构。 微服务管理是实现大规模微服务部署时必须应对的另一个重要挑战。

下一章 会介绍如何使用容器简化微服务管理。

第 9 章,用 Docker 容器化微服务

本章探讨了云环境对于实现互联网级微服务的必要性。 本章介绍了容器的概念并比较了容器和传统的虚拟机,还介绍了 Docker 的基 础知识,解释了 Docker 镜像、容器和注册表的概念,并在微服务的上下文中 阐释了容器的重要性和优势。 本章随后通过容器化 BrownField 微服务转到了一个实操的例子,演示了如何 将之前开发的 Spring Boot 微服务部署到 Docker。通过研究本地容器注册表和 用于上传/下载容器化微服务的 Docker Hub,讲解了容器注册表的概念。 最后介绍了如何在 AWS 云环境中部署容器化的 BrownField 微服务。

第 10 章,用 Mesos 和 Marathon 扩展容器化的微服务

本章介绍了应用程序自动扩容的不同方面和高效管理大规模 Docker 化微服务 中容器编排的重要性。 在详细介绍 Mesos 和 Marathon 前,我们研究了不同的容器编排工具。我们在 AWS 云环境中实现了 Mesos 和 Marathon,并演示了如何管理为 BrownField 公司 PSS 应用开发的 Docker 化微服务。 前面介绍了成功实现微服务所需要的所有核心能力及支撑技术。除了技术, 成功的微服务实现也需要相应的流程和实践方法。

下一章会从流程和实践的 角度讲解微服务。

第 11 章,微服务开发生命周期

本章介绍了微服务和 DevOps 的关系,讨论了开发微服务时的一系列实践要 点,还详细介绍了微服务开发的生命周期。 本章后面的部分介绍了如何将从开发到生产的整个微服务交付管道自动化, 并介绍了一系列工具和技术,最后探讨了微服务治理中标准类库和参考架构 的重要性。 全面掌握本书介绍的微服务概念、挑战、最佳实践即及各项能力是成功开发 大规模微服务的最佳秘诀。

本书各章的内容都很实用,细致讲授了如何将微服务技术与业务相结合。通 过一系列示例(包括一个旅游业的案例研究),书中阐述了微服务架构的实 现,涉及 Spring 框架、Spring Boot 和 Spring Cloud。这些都是用于开发和部 署大规模可扩展微服务的强大且久经考验的工具。本书基于 Spring 框架的最 新规范编写。借助本书,你可以快速构建互联网级现代 Java 应用

【Spring 微服务架构设计原文档👇】

相关文章:

京东技术专家首推:Spring 微服务架构设计,GitHub 星标 128K

前言 本书提供了实现大型响应式微服务的实用方法和指导原则,并通过示例全面 讲解如何构建微服务。本书深入介绍了 Spring Boot、Spring Cloud、 Docker、Mesos 和 Marathon,还会教授如何用 Spring Boot 部署自治服务,而 无须使用重量级应用服…...

R语言--森林图制作

#数据准备- data5 #install.packages("rmda")rm(list=ls())library(MASS)library(rmda)library(dplyr) #mutate依赖环境library(magrittr) #%>%依赖setwd("D:/R/nomo5new2")data...

Tomcat中利用war包部署

在Tomcat中利用war包部署Web应用程序时,默认情况下,应用程序的上下文路径(也称为项目名称)将是war文件的名称(去除.war扩展名)。这意味着您在访问Web应用程序时必须在URL中包含项目名称。例如,如…...

[JAVAee]线程安全

目录 线程安全的理解 线程不安全的原因 ①非原子性 ②可见性 ③代码重排序 体会何为不安全的线程 保证线程安全 一个代码在多线程的环境下就很容易出现错误. 线程安全的理解 线程安全是什么呢?通俗的来讲,线程安全就是在多线程的环境下,代码的结果是符合我们预期的,就…...

ELK环境搭建——概况

Elastic Stack,核心产品包括 Elasticsearch、Kibana、Beats 和 Logstash等等。能够安全可靠地从任何来源获取任何格式的数据,然后对数据进行搜索、分析和可视化。 目录 一:Elasticsearch: 1.1 从数据中探寻各种问题的答案 1.1.1 定义您自己的搜索方式...

面试知识点整理

计算机的物理内存是有限的,所以操作系统在遇到内存不足时,会通过换页机制暂时把 某个进程未使用的内存中的数据搬移到硬盘上(比如 Linux 的 swap 分区),并在系统页表中 删除相应的表项。当该进程访问数据已经被搬移到硬…...

腾讯云服务器CVM计算型c6/c5实例CPU型号、处理器主频大全

腾讯云服务器CVM计算型C6、C5、C4、CN3、C3和C2实例,计算型C6云服务器CPU采用Intel Xeon Ice Lake处理器,主频3.2GHz,睿频3.5GHz,腾讯云服务器网分享更多计算型CVM云服务器CPU型号、处理器主频性能说明: 目录 云服务…...

vue3笔记-脚手架篇

第一章 基础篇 第二章 脚手架篇 vue2与vue3的一些区别 响应式系统: Vue 2 使用 Object.defineProperty 进行响应式数据的劫持和监听,它对数据监听是一项项的进行监听,因此,当新增属性发生变化时,它无法监测到&…...

数字的补数

题目: 对整数的二进制表示取反(0 变 1 ,1 变 0)后,再转换为十进制表示,可以得到这个整数的补数。 例如,整数 5 的二进制表示是 "101" ,取反后得到 "010" &…...

Taskfile demo

https://github.com/yangyang5214/blog/issues/1 makefile 很好用,但是有些语法我不会。 go-task yml & shell 不错,推荐 Taskfile.yml https://github.com/go-task/task/blob/main/.golangci.yml # go install github.com/go-task/task/v3/cmd/ta…...

MyBatis学习笔记之高级映射及延迟加载

文章目录 环境搭建,数据配置多对一的映射的思路逻辑级联属性映射association分布查询 一对多的映射的思路逻辑collection分布 环境搭建,数据配置 t_class表 t_stu表 多对一的映射的思路逻辑 多对一:多个学生对应一个班级 多的一方是st…...

小程序如何删除/上架/下架商品

在小程序中,产品的删除、上架和下架是常见的操作,可以根据实际需求来管理商品的展示与销售。下面将介绍如何在小程序中删除上架下架商品的具体步骤。 进入商品管理页面, 在个人中心点击管理入口,然后找到“商品管理”菜单并点击。…...

Failed to load local font resource:微信小程序加载第三方字体

加载本地字体.ttf 将ttf转换为base64格式:https://transfonter.org/ 步骤如下 将下载后的stylesheet.css 里的font-family属性名字改一下,然后引进页面里就行了,全局样式就放app.scss,单页面就引入单页面 注: .title…...

使用fastjson错误

说明:使用fastjson时,对象解析不成功,一直报错,但是json格式没有错; 错误信息:Method threw ‘com.alibaba.fastjson.JSONException’ exception. json数据是正确的 分析:注意看,fa…...

【GitOps系列】使用Kustomize和Helm定义应用配置

文章目录 使用 Kustomize 定义应用改造示例应用1.创建基准和多环境目录2.环境差异分析3.为 Base 目录创建通用 Manifest4.为开发环境目录创建差异 Manifest5.为预发布环境创建差异 Manifest6.为生产环境创建差异 Manifest 部署 Kustomize 应用部署到开发环境部署到生产环境 使用…...

Android kotlin高阶函数与Java lambda表达式介绍与实战

一、介绍 目前在Java JDK版本的不断升高,新的表达式已开始出现,但是在Android混淆开发中,kotlin的语言与Java的语言是紧密贴合的。所以Java lambda表达式在kotlin中以新的身份出现:高阶函数与lambda表达式特别类似。接下来我讲会先…...

自然语言处理实战项目13-基于GRU模型与NER的关键词抽取模型训练全流程

大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目13-基于GRU模型与NER的关键词抽取模型训练全流程。本文主要介绍关键词抽取样例数据、GRU模型模型构建与训练、命名实体识别(NER)、模型评估与应用,项目的目标是通过训练一个GRU模型…...

7.26 Qt

用QT制作一个登陆界面 运行代码 login.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug> //信息调试类&#xff0c;用于输出 #include <QIcon> //图标类头文件 #include <QPushButton&…...

【MySQL】库和表的操作

目录 一、库的操作 1.1创建数据库 1.2创建数据库案例 1.3字符集和校验规则 &#xff08;1&#xff09;查看系统默认字符集以及校验规则 &#xff08;2&#xff09;查看数据库支持的字符集 &#xff08;3&#xff09;查看数据库支持的字符集校验规则 &#xff08;4&…...

(五)RabbitMQ-进阶 死信队列、延迟队列、防丢失机制

Lison <dreamlison163.com>, v1.0.0, 2023.06.23 RabbitMQ-进阶 死信队列、延迟队列、防丢失机制 文章目录 RabbitMQ-进阶 死信队列、延迟队列、防丢失机制死信队列延迟队列延迟队列介绍**延迟队列_死信队列_的实现**延迟队列_插件实现下载插件RabbitMQ 配置类RabbitMQ …...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...