【微服务】认识微服务

一、服务架构的演变

1、单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署,架构简单,部署成本低,但耦合度高。

2、分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务,降低了服务的耦合度,有利于服务升级拓展,但是服务拆分和治理会出现问题。

3、微服务:一种经过良好设计的分布式架构方案,具有单一职责、面向服务、自治(独立)、隔离性强。

二、微服务技术对比

企业需求:

三、SpringCloud

springCloud是目前国内使用最广泛的微服务框架,集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验。

四、服务拆分及远程调用

(一)注意事项:

1、不同微服务,不要重复开发相同业务

2、微服务数据独立不要访问其他微服务的数据库

3、微服务可以将自己的业务暴露为接口,供其他微服务使用

五、服务之间发起请求

在初始情况下,查询order和user只能分开查询,在order中可以看到userId

通过order基于userId发起http请求,查询到订单中的用户:

(一)注册RestTemplate(bean)(bean的注入只能放到配置类里面,而带有@SpringBootApplication的启动类也是配置类)

java 复制代码
     /**
     * 创建RestTemplate并注入Spring容器
     * @return
     */
        @Bean
        public RestTemplate restTemplate(){
            return new RestTemplate();
        }

(二)修改orderService

java 复制代码
@Service
public class OrderService {

    @Autowired
    private OrderMapper orderMapper;
    @Autowired
    private RestTemplate restTemplate;

    public Order queryOrderById(Long orderId) {
        // 1.查询订单
        Order order = orderMapper.findById(orderId);
        //2、利用RestTemplate发送http请求,查询用户
        //2.1 url路径
        String url = "http://localhost:8081/user/" + order.getUserId();
        //2.2 发起http请求,实现远程调用(原本返回的是json,告诉它我们要User对象类型)
        User user = restTemplate.getForObject(url, User.class);
        //3 封装user到order
        order.setUser(user);
        // 4.返回
        return order;
    }
}

此时我们的order中已经可以请求到用户信息了

六、提供者与消费者

1、服务提供者:一次业务中,被其他服务调用的服务(提供接口给其他服务)

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

问:A调用B,B调用C,B是什么?一个服务既可以是提供者又可以是消费者。

相关推荐
知守观几秒前
多模块架构演进:横向分层 vs 纵向领域,13 个真实项目的切分对照
java·后端·微服务
Java成神之路-16 分钟前
Java String 为什么不可变?和 HashMap 到底有什么关系?
java
paopaokaka_luck19 分钟前
基于springboot+vue的益暖微光公益服务平台(DeepSeek公益助手、善款信息追溯、志愿服务积分闭环、ECharts运营分析、活动状态自动流转)
java·前端·javascript·spring boot·mysql·架构·echarts
涛声依旧-底层原理研究所20 分钟前
拆解 AI Agent 的四个内核:Loop、Tools、Memory 与 Harness
人工智能·架构
文丑颜不良啊30 分钟前
LeetCode1401~1420题目解析
java·leetcode
Nuanyt31 分钟前
LeetCode Hot 100 链表专题2 3 题 (Java)
java·笔记·算法·leetcode·链表
文丑颜不良啊39 分钟前
LeetCode1341~1360题目解析
java·leetcode
傻啦嘿哟39 分钟前
分布式爬虫架构:Redis+Scrapy打造企业级爬虫系统
分布式·爬虫·架构
QianhangQianping1 小时前
撤销重做不是「存快照」:一个可视化编辑器的Operation 设计
java·前端·数据库·typescript·编辑器·前端架构·撤销重做
FastCAE20221 小时前
FastCAE AI应用助手重构(一)架构与桥接详解
人工智能·重构·架构