Cynicism Cynicism
首页
  • 前端学习笔记

    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • TypeScript
    • JS设计模式总结
    • 小程序笔记
  • 后端学习笔记

    • 《JavaWeb》
    • 《SSM》
    • 《瑞吉外卖》
    • 《Git》
    • 《SpringCloud》
    • 《黑马点评》
    • 《Spring原理》
    • 《JVM》
    • 《Java并发编程》
    • 《学成在线》
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 面试
  • 常见问题
  • 实用技巧
  • 友情链接
实习
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Cynicism

Java后端学习中的IKUN
首页
  • 前端学习笔记

    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • TypeScript
    • JS设计模式总结
    • 小程序笔记
  • 后端学习笔记

    • 《JavaWeb》
    • 《SSM》
    • 《瑞吉外卖》
    • 《Git》
    • 《SpringCloud》
    • 《黑马点评》
    • 《Spring原理》
    • 《JVM》
    • 《Java并发编程》
    • 《学成在线》
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 面试
  • 常见问题
  • 实用技巧
  • 友情链接
实习
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 微服务简介
    • 1. 微服务
      • 1.1 介绍
      • 1.2 SpringCloud
      • 1.3 总结
    • 2. 服务拆分和远程调用
      • 2.1 服务拆分原则
      • 2.2 远程调用 —— RestTemplate
    • 2.3 提供者与消费者
  • 服务注册发现
  • 配置管理与网关
  • RabbitMQ
  • ES-数据存储
  • ES-数据搜索
  • ES-数据分析
  • 微服务保护
  • 分布式事务
  • 分布式缓存
  • 多级缓存
  • 服务异步通信
  • 《SpringCloud》笔记
cynicism
2023-06-20
目录

微服务简介

# 1. 微服务

# 1.1 介绍

微服务的架构特征:

  • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
  • 自治:团队独立、技术独立、数据独立,独立部署和交付
  • 面向服务:服务提供统一标准的接口,与语言和技术无关
  • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

微服务的上述特性其实是在给分布式架构制定一个标准,进一步降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低耦合。

因此,可以认为微服务是一种经过良好架构设计的分布式架构方案

# 1.2 SpringCloud

SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud。

SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验。

其中常见的组件包括:

另外,SpringCloud底层是依赖于SpringBoot的,并且有版本的兼容关系,如下:

# 1.3 总结

  • 单体架构:简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统

  • 分布式架构:松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝

  • 微服务:一种良好的分布式架构方案

    ①优点:拆分粒度更小、服务更独立、耦合度更低

    ②缺点:架构非常复杂,运维、监控、部署难度提高

  • SpringCloud是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件

# 2. 服务拆分和远程调用

# 2.1 服务拆分原则

这里我总结了微服务拆分时的几个原则:

  • 不同微服务,不要重复开发相同业务
  • 微服务数据独立,不要访问其它微服务的数据库
  • 微服务可以将自己的业务暴露为接口,供其它微服务调用

# 2.2 远程调用 —— RestTemplate

RestTemplate 是 Spring 框架提供的一个用于进行 HTTP 请求的模板类,它简化了 Java 开发人员与 RESTful 服务的交互。通过 RestTemplate,我们可以发送 GET、POST、PUT、DELETE 等类型的 HTTP 请求,并且可以将返回的结果直接转换为需要的对象类型。

使用 RestTemplate 发送 HTTP 请求通常需要以下几个步骤:

  • 创建 RestTemplate 对象:
RestTemplate restTemplate = new RestTemplate();
1
  • 发送 HTTP 请求:
String url = "https://api.example.com/v1/users/{id}";
User user = restTemplate.getForObject(url, User.class, 1);
1
2

在上述代码中,我们使用 getForObject() 方法发送一个 GET 请求,其中 url 表示请求的 URL,User.class 表示需要将响应转换为 User 类型的对象,1 表示 URL 中的占位符 {id} 的值。

  • 处理返回结果:
System.out.println(user.getName());
1

在上述代码中,我们将从服务端获取到的用户信息打印输出。

RestTemplate 还提供了其他很多方便的方法,例如 postForObject()、put()、delete() 等,开发者可以根据具体需求进行选择。

需要注意的是,在使用 RestTemplate 发送 HTTP 请求时,需要注意处理异常情况,例如网络不可用,或者无法连接到指定的服务端等等。

# 2.3 提供者与消费者

在服务调用关系中,会有两个不同的角色:

服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务)

服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)

编辑 (opens new window)
#springcloud
上次更新: 2025/05/12, 04:51:03
服务注册发现

服务注册发现→

最近更新
01
JVM调优
06-03
02
Linux篇
03-30
03
Kafka篇
03-30
更多文章>
Theme by Vdoing | Copyright © 2023-2025 Cynicism | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式