2021-10-01

                                        ## 微服务学习

第一天;
认识:
微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征:
单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
面向服务:微服务对外暴露业务接口。
自治:团队独立、技术独立、数据独立、部署独立
隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题
感受:
这是第一次去学习微服务,之前做的项目练习都是单体架构,所有的功能都集中在一起开发,然后再打包发布,感觉太繁琐了,其实在我看来微服务就是把各个功能分开开发,每一个功能在开发过程中不会相互影响
总结:
微服务需要根据业务模块拆分,做到单一职责,不要重复开发相同业务
微服务可以将业务暴露为接口,供其它微服务使用
不同微服务都应该有自己独立的数据库

下边是案例:
项目工程
这是一个简单的maven项目,其中里边是三个子模块,数据库部分就不展示了
order-service:
相当于一个订单类,就是从数据库中根据订单号来返回订单信息

Slf4j
@RestController
@RequestMapping("/order")
public class OrderController {

   @Autowired
   private OrderService orderService;

    @GetMapping("/{orderId}")
    public Order queryOrderByUserId(@PathVariable("orderId") Long orderId) {
        // 根据id查询订单并返回
        return orderService.queryOrderById(orderId);
    }
}

页面展示:
在这里插入图片描述

user-service:
就是一个用户信息类,有用户名,和地址.

@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 路径: /user/110
     *
     * @param id 用户id
     * @return 用户
     */
    @GetMapping("/{id}")
    public User queryById(@PathVariable("id") Long id) {
        return userService.queryById(id);
    }
}

页面展示:
在这里插入图片描述
问题:
这是分模块开发,要是我们想要在输出订单信息的时候要输出对应的user应该怎么做?
其实要是在单体模式开发的话就是再查一次数据库就行,但这是多个模块微服务开发,按照微服务的原则order的模块里边不应该出现查询user数据库等之类的功能,这时候就用到了服务远程调用:
RestTemplate:
RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接, 我们只需要传入url及返回值类型即可。相较于之前常用的HttpClient,RestTemplate是一种更优雅的调用RESTful服务的方式。
首先要进行在配置注册:

 @Bean
    public RestTemplate restTemplate(){
        return  new RestTemplate();
    }
    其次要修改order-service中的方法:
 public Order queryOrderById(Long orderId) {

        // 1.查询订单
        Order order = orderMapper.findById(orderId);
        //利用RsetTemplate发起http,进行远程调用
        //地址
        String url="http://127.0.0.1/user/"+order.getUserId();
        User user = restTemplate.getForObject(url, User.class);
        order.setUser(user);
        // 4.返回
        return order;
    }

在这里插入图片描述
这样就可以实现服务远程调用了。重要的是符合微服务的要求:
不开发相同业务,在order里边只开发order类型,而不能为了user去访问其他数据库。

学习会持续更新!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值