Spring微服务实战

第一章 欢迎迈入云世界,Spring

书本知识

微服务重要概念:分解和分离应用程序的功能,使他们完全彼此独立
1

  • 每个组件独立部署,对单个业务领域负责

  • 微服务通信采用HTTP和JSON这样的轻量级通信协议,在服务消费者和服务提供者之间数据交换

  • Spring本质上就是让用户像玩乐高积木一样将自己的代码组装在一起

  • Spring Boot提供了一个基于Java的、面向REST的微服务框架

  • Spring Cloud框架使实施和部署微服务到私有云或公有云更简单
    在这里插入图片描述
    编译代码:进入到文件夹下,运行mvn clean package docker:build
    启动容器:docker-comose -f docker/common/docker-compose.yml up

云计算有三种基本模式:

  1. 基础设施即服务IaaS
  2. 平台即服务PaaS
  3. 软件即服务SaaS

微服务不只是业务逻辑,还要考虑服务的运行环境及服务的伸缩性和弹性

微服务架构的优点是独立部署,缺点是调试和跟踪应用程序和服务中发生的事困难

  • 日志关联
  • 日志聚合
  • 微服务跟踪

Spring Cloud简化了将这些项目设置和配置到Spring应用程序中的工作,以便开发人员专注于编写代码,不会陷入配置构建和部署微服务应用程序的所有基础设置细节中。
在这里插入图片描述
在这里插入图片描述
Spring cloud config:确保无论启动多少个微服务实例,这些微服务始终有相同的配置

微服务与语言无关,但是引入Spring Boot和Spring Cloud框架只需要几个注解就可以为微服务添加大量的功能,参见25-27页例子

服务发现

在这里插入图片描述
如上图所示,这是一个在浏览器输入域名,然后获取网站服务的流程。这个流程中,DNS服务器会根据我们的域名解析出一个ip地址,返回ip地址中对应链接包含的内容。我们根据特定的标志(域名)来获取我们所需要的服务,这就是服务发现。而在微服务的领域,我们将应用拆分成一个个的微服务之后,服务发现,则变成了微服务之间相互获取彼此的信息。
目前,服务发现主要存在有两种模式,客户端模式与服务端模式,两者的本质区别在于,客户端是否保存服务列表信息。下面用两个图来表示客户端模式与服务端模式。

客户端模式

在这里插入图片描述
在客户端模式下,如果要进行微服务调用,首先要进行的是到服务注册中心获取服务列表,然后再根据调用端本地的负载均衡策略,进行服务调用。

服务端模式

在这里插入图片描述
在服务端模式下,调用方直接向服务注册中心进行请求,服务注册中心再通过自身负载均衡策略,对微服务进行调用。这个模式下,调用方不需要在自身节点维护服务发现逻辑以及服务注册信息,这个模式相对来说比较类似DNS模式。

客户端模式服务端模式
只需要周期性获取列表,在调用服务时可以直接调用少了一个RT。但需要在每个客户端维护获取列表的逻辑简单,不需要在客户端维护获取服务列表的逻辑
可用性高,即使注册中心出现故障也能正常工作可用性由路由器中间件决定,路由中间件故障则所有服务不可用,同时,由于所有调度以及存储都由中间件服务器完成,中间件服务器可能会面临过高的负载
服务上下线对调用方有影响(会出现短暂调用失败)服务上下线调用方无感知

第二章 使用Spring Boot构建微服务

成功的微服务开发的基础是从以下三个关键角色的视角开始的:

  • 架构师
  • 软件开发人员
  • DevOps工程师

架构师

3个关键任务:

  • 分解业务问题
  • 建立服务粒度
  • 定义服务接口

开发人员

骨架项目:pox.xml
目标是运行一个简单的微服务,然后重复这个步骤提供功能,为此需要在许可证服务微服务中创建以下两个类

  • 一个Spring引导类,可被Spring Boot用于启动和初始化应用程序,eg:@SpringBootApplication
  • 一个Spring控制器,用来公开可以被微服务调用的HTTP端点, eg:@RestController

DevOps工程师

  • 打包和部署微服务
  • 管理微服务的配置
  • 服务注册和发现
  • 服务监控

第三章 使用Spring Cloud配置服务器控制配置

低层级的属性文件(YAML,JSON,XML)存储配置信息,属性文件通常包含数据库和中间件连接信息,以及驱动应用程序行为的相关元数据。(但是不适用于数百个微服务的基于云的应用程序)

基于云的微服务开发强调一下几点:

  • 应用程序的配置和正在部署的实际代码完全分离
  • 在服务器启动时通过环境变量注入应用程序配置信息,或者在微服务启动时通过集中式存储库读取应用程序配置信息

管理配置

在这里插入图片描述

使用Spring Cloud配置服务器

第四章 服务发现

云中的服务发现

  • 一个节点不可用,其他节点应该能够接管工作
  • 每个节点共享服务实例的状态
  • 负载均衡
  • 有弹性:服务发现的客户端应该在本地缓存服务信息
  • 容错:无人干预的情况下对故障进行检测并从服务列表中移除实例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值