微服务服务治理

勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

导读:本篇文章讲解 微服务服务治理,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文


什么是服务治理?

服务治理是微服务架构中最核心最基本的模块。用于实现各个微服务的自动化注册与发现。

假如现在分别有订单模块和商品模块这两个部分,当订单模块中生成订单的时候肯定要调用商品模块中的查询功能,但因为是微服务架构,两个模块此时在不同的服务器上,所以这时候我们就要用到远程调用了

在这里插入图片描述

基本远程调用示例代码:

第一步:请求调用模块的启动类中

	@Bean
	public RestTemplate restTemplate(){
        return new RestTemplate();
    }

第二步:请求调用模块的serviceImpl类

@Service
@Slf4j
public class OrderServiceImpl implements IOrderService {
    @Autowired
    private OrderDao orderDao;

    @Autowired
    private RestTemplate restTemplate;
     @Override
    public Order createOrder(Long productId, Long userId) {
        log.info("接收到()号商品的下单请求,接下来调用商品微服务查询此商品信息",productId);
               String url = "http://localhost:8081/product/"+productId;
        Product product = restTemplate.getForObject(url,Product.class);
        log.info("查询到()号商品的信息,内容是:()",productId, JSON.toJSONString(product));
        //创建订单并保存
        Order order = new Order();
        order.setUid(userId);
        order.setUsername("杨宸教育");
        order.setPid(productId);
        order.setPname(product.getPname());
        order.setPprice(product.getPprice());
        order.setNumber(1);
        orderDao.save(order);
        log.info("创建订单成功,订单信息为()",JSON.toJSONString(order));
        return order;
    }
}

核心部分:

在这里插入图片描述
虽然起到了远调用的作用,但这种方法的缺点是显而易见的
1.若改变调用模块的IP地址,需要手动进行更改
2.若有两三个服务器操作相同的微服务模块的时候,没有办法判断到底该操作哪个IP地址,并且当一个服务器出现故障的时候,此时也没有办法进行人为的感知到
因此就有人想要做出一种可以来监测管理这一问题的办法
在这里插入图片描述

服务管理

第一部分 服务注册

服务注册:在服务治理框架中,都会构建一个注册中心,每个服务单元向注册中心登记自己提供服务的详细信息。并在注册中心形成一张服务的清单,服务注册中心需要以心跳的方式去监测清单中的服务是否可用,如果不可用,需要在服务清单中剔除不可用的服务。

第二部分 服务发现

服务发现:服务调用方向服务注册中心咨询服务,并获取所有服务的实例清单,实现对具体服务实例的访问。


Nacos(常见注册中心)入门

在这里插入图片描述


搭建Nacos环境

第一步:安装nacos

下载地址: https: //github.com/alibaba/ nacos/releases
下载zip格式的安装包,然后进行解压缩操作,上课使用的Nacos Server版本是1.3.2

第二步:启动nacos

#切换目录
cd nacos/bin
#启动nacos
startup.cmd -m standalone

第三步:访问nacos

在这里插入图片描述

第四步:导入依赖

   <!--nacos客户端-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

第五步: 在主类上添加@EnableDiscoveryClient注解

在这里插入图片描述

第六步:在application.yml中添加Nacos服务的地址

在这里插入图片描述
在这里插入图片描述


Nacos远程调用

代码示例

在这里插入图片描述


实现商品服务的负载均衡

什么是负载均衡?

通俗的讲,负载均衡就是将负载(工作任务,访问请求)进行分摊到多个操作单元(服务器,组件)上进行执行。
根据负载均衡发生的位置的不同,一般分为服务器负载均衡和客户端负载均衡
服务器负载均衡指的是发生在服务提供者一方,比如常见的nginx负载均衡
而客户端负载均衡指的是发生在服务器请求的一方,也就是在发送请求之前已经选好了由哪个实例处理请求

在这里插入图片描述

手动实现负载均衡

在这里插入图片描述
在这里插入图片描述

利用组件实现负载均衡

请求调用启动类下:

在这里插入图片描述

请求调用service类下

在这里插入图片描述


修改负载均衡策略

在这里插入图片描述

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/141553.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!