SpringCloud(八)Consul的微服务注册

将微服务注册到Consul

1 入门案例

提供一个商品微服务

提供一个订单系统

将微服务注册到Consul

依赖

provider

 <!--SpringCloud提供的对于Consul的服务发现-->         <dependency>             <groupId>org.springframework.cloud</groupId>             <artifactId>spring-cloud-starter-consul-discovery</artifactId>         </dependency>         <!--actuator健康检查-->         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-actuator</artifactId>         </dependency>
 ? ?

orderservice

 <!--SpringCloud提供的对于Consul的服务发现--> <dependency>     <groupId>org.springframework.cloud</groupId>     <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency> <!--actuator健康检查--> <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-actuator</artifactId> </dependency>

配置

 spring:   application:     name: service-product #服务名称   cloud:     consul:       host: 127.0.0.1 #consul服务器的主机地址       port: 8500 #consul的端口号       discovery:         #是否需要注册         register: true         #注册的实例ID(唯一标志)         instance-id: ${spring.application.name}+${random.int}         #服务的名称         service-name: ${spring.application.name}         #服务的请求端口         port: ${server.port}         #指定开启IP地址注册         prefer-ip-address: true         #当前服务的请求IP         ip-address: ${spring.cloud.client.ip-address} ?

`

 package com.qqq; ? import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; ? @SpringBootApplication @EntityScan("com.qqq.entity") public class OrderApplication {     public static void main(String[] args) {         SpringApplication.run(OrderApplication.class,args);     }     /**      * eureka和consul都集成了Ribbon      * 使用spring提供的RestTemplate发送http请求到商品服务      * 1 将RestTemplate对象交给容器管理      * 2 使用其方法完成操作      */     @LoadBalanced //Ribbon自带的负载均衡的注解     @Bean     public RestTemplate restTemplate()     {         return new RestTemplate();     } ? ? }
 package com.qqq.controller; ? import com.qqq.entity.Product; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; ? import java.util.List; ? @RestController @RequestMapping("/order") public class OrderController {     //注入RestTemplate对象     @Autowired     private RestTemplate restTemplate;     /**      * 注入DiscoveryClient      * SpringCloud提供的获取元数据的工具类      * 调用方法获取服务的元数据信息      */     @Autowired     private DiscoveryClient discoveryClient;     /**      * 参数:商品ID      * 通过订单系统,调用商品服务根据id查询商品信息      * 1 需要配置一个商品对象      * 2 需要调用商品服务      * 使用java中的urlConnection完成,或使用httpClient,okHttp      * RestTemplate      */ //    @RequestMapping(value = "/buy/{id}",method = RequestMethod.GET) //    public Product findById(@PathVariable("id") Long id) //    { //        //调用DiscoveryClient的getInstances方法根据服务名获取元数据 //        List<ServiceInstance> instances = discoveryClient.getInstances("SERVICE-PRODUCT"); //        //获取唯一的元数据 //        ServiceInstance instance = instances.get(0); //        Product product=null; //        //如何调用商品服务 //        //根据元数据和端口号拼接请求的url //        product=restTemplate.getForObject("http://"+instance.getHost()+":"+instance.getPort()+"/product/"+id,Product.class); //        return product; //    } ?     /**      *      * 基于Ribbon的形式调用远程微服务      * @param id      * @return      */     @RequestMapping(value = "/buy/{id}",method = RequestMethod.GET)     public Product findById(@PathVariable("id") Long id)     {         Product product=null;         product=restTemplate.getForObject("http://service-product/product/"+id,Product.class);         return product;     } }

原文地址:https://www.cnblogs.com/qyx66/p/12293590.html

时间: 2024-08-30 10:05:16

SpringCloud(八)Consul的微服务注册的相关文章

Nacos作为微服务注册中心,爱不释手的感觉

我觉得Nacos用起来还不错 在使用SpringCloud做分布式微服务架构时,注册中心是必不可少的一个组件.目前可以用的主要有:Eureka.Consul.Zookeeper.今天,我们就来说一下Alibaba的Nacos怎么样? 下载与安装 下载地址https://github.com/alibaba/nacos/releases 安装: Windows 下载解压后(.zip),直接点击bin/start.bat就可以了. Linux下载解压后(.tar.gz),同样,也是运行 bin/st

【3分钟就会系列】使用Ocelot+Consul搭建微服务吧!

原文:[3分钟就会系列]使用Ocelot+Consul搭建微服务吧! 一.什么Ocelot? API网关是一个服务器,是系统的唯一入口.API 网关一般放到微服务的最前端,并且要让API 网关变成由应用所发起的每个请求的入口.这样就可以明显的简化客户端实现和微服务应用程序之间的沟通方式.从面向对象设计的角度看,它与外观模式类似.API网关封装了系统内部架构,为每个客户端提供一个定制的API.它可能还具有其它职责,如身份验证.监控.负载均衡.缓存.请求分片与管理.静态响应处理. Ocelot 是一

从零开始搭建系统3.2——微服务注册中心开发及部署

从零开始搭建系统3.2--微服务注册中心开发及部署 原文地址:https://www.cnblogs.com/provence666/p/8638586.html

微服务-注册与发现-zookeeper bydasn

目录 一.微服务注册的概述 二.zookeeper2.1 zookeeper基本操作2.2 zookeeper集群搭建 一.微服务注册概述 在微服务中,有这么一个东西叫服务注册表,服务注册表是整个微服务的核心,功能有两个,服务注册以及服务发现.   那么这张表有什么要求?   a.服务注册以及服务发现:首先服务启动后,要往表上面写配置信息,注册服务,然后客户端要能发现服务,反向代理去拿这些东西.   b.心跳检测:如果发现某个服务没办法访问量,马上就得移除掉,要求高性能以及高可用. 二.zook

微服务架构【SpringBoot+SpringCloud+VUE】一 || 微服务简介

目录 1.什么是微服务 2.Spring Cloud是什么 3.服务注册中心 4.学习交流QQ群[883210148] 1.什么是微服务 在开发项目之前,我们有必要了解一下,什么是微服务?简单来说:微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独立部署,各个微服务之间是松耦合的.每个微服务仅关注于完成一件任务并很好地完成该任务.在所有情况下,每个任务代表着一个小的业务能力. 2.Spring Cloud是什么 Spring Cloud是一个微服务框架的规

.Net Core 商城微服务项目系列(二):使用Ocelot + Consul构建具备服务注册和发现功能的网关

1.服务注册 在上一篇的鉴权和登录服务中分别通过NuGet引用Consul这个包,同时新增AppBuilderExtensions类: public static class AppBuilderExtensions { public static IApplicationBuilder RegisterConsul(this IApplicationBuilder app,IApplicationLifetime lifetime,ServiceEntity serviceEntity) {

springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离

1.代码生成器: [正反双向](单表.主表.明细表.树形表,快速开发利器)freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本.处理类.service等完整模块2.多数据源:(支持同时连接无数个数据库,可以不同的模块连接不同数的据库)支持N个数据源3.阿里数据库连接池druid,安全权限框架 shiro(菜单权限和按钮权限), 缓存框架 ehcache4.代码编辑器,在线模版编辑,仿开发工具编辑器5.调用摄像头拍照 自定义裁剪编辑头像,头像图片色度调节6.we

企业分布式SpringCloud+SpringBoot+Mybatis+shiro+微服务 技术分享

介绍 Commonservice-system是一个大型分布式.微服务.面向企业的JavaEE体系快速研发平台,基于模块化.服务化.原子化.热插拔的设计思想,使用成熟领先的无商业限制的主流开源技术构建.采用服务化的组件开发模式,可实现复杂的业务功能.提供驱动式开发模式,整合内置的代码生成器,将JavaEE开发效率提高5倍以上,减少50%的代码开发量,解决80%的重复工作,让开发者更关注业务逻辑.使用Maven进行项目的构建管理,采用Jenkins进行持续集成,主要定位于大型分布式企业系统或大型分

微服务注册与发现

目录 简介 实现服务注册组件 设计服务注册表数据结构 搭建应用程序框架 定义服务注册表接口 使用 ZooKeeper 实现服务注册 服务注册模式 实现服务发现组件 搭建应用程序框架 实现服务发现 服务发现优化方案 服务发现模式 参考 简介 先来回顾下整体的微服务架构 在发布微服务时,可连接 ZooKeeper 来注册微服务,实现"服务注册".当浏览器发送请求后,可使用 Node.js 充当 service gateway,处理浏览器的请求,连接 ZooKeeper,发现服务配置,实现服