1. 创建web服务

IDEA->File->New->Project->Empty Project,project name取名provider,点击finish

2. 创建provider module

在IDEA demo project中选择File->New->Module->Spring Initializer->Next,Artifact取名为provider

3. 在Depedencies中选择web中web,Cloud Discovery中Consul Discovery, Ops中选择Actuator,core中选择Lombok,如下所示:

web是spring-boot-starter-web, 是rest的spring boot web应用

consul discovery是consul的依赖包

actuator是spring boot提供的特性包,监控管理spring boot应用,其中提供的健康检查api被用于consul健康检查

4. 工程目录如下:

5. 添加一个rest api接口:

package com.example.provider.controller;import com.example.provider.entity.ProviderPOJO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.Random;
import java.util.concurrent.atomic.AtomicLong;@RestController
@Slf4j
public class ProviderController {private final AtomicLong counter = new AtomicLong(new Random().nextInt(1000));@Value("${server.port}")private int port;@RequestMapping("/demo")public ProviderPOJO demo(@RequestParam(value = "name", defaultValue = "provider") String name) {ProviderPOJO providerPOJO = new ProviderPOJO(counter.incrementAndGet(), name, port);log.info("ProviderController:demo(): " + providerPOJO);return providerPOJO;}
}

pojo类:

package com.example.provider.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
public class ProviderPOJO {private Long id;private String name;private Integer port;
}

6. 添加配置文件:src/main/resources/bootstrap.properties

主要启用了consul配置,并配置了consul的服务器地址和端口,其中instance-id用到了随机数,因为consul是以instance-id来区分一个同名服务的不同实例:

spring.application.name=provider
server.port=${PORT:8081}
spring.cloud.consul.enabled=true
spring.cloud.consul.port=8500
spring.cloud.consul.ribbon.enabled=true
spring.cloud.consul.discovery.enabled=true
spring.cloud.consul.discovery.register=true
spring.cloud.consul.discovery.prefer-ip-address=true
spring.cloud.consul.discovery.instance-id=${spring.application.name}:${spring.application.instance_id:${random.value}}:${server.port}

7. 启动本机consul注册发现服务中心(使用dev模式)

docker run --name consul0 -d -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600 consul:1.2.2 agent -dev -bind=0.0.0.0 -client=0.0.0.0

8. 启动provider应用,从日志输出中可以看到,往id为provider-9769b141d132f135edca03091da8baf9-8080,name为provider,ip为192.168.33.74,端口为8080的服务:

9. 浏览器访问consul管理后台:

10. 浏览器访问provider的test接口:http://localhost:8080/test

11. 水平扩展provider微服务:

第一步: 更改bootstrap.properties中端口为8081

第二步:更改ProviderApplication启动配置,右上角勾选Share,不勾选Single instance only,如下所示:

第三步:再次运行provider工程,将存在两个provider的两个实例

浏览器访问consul管理后台:http:localhost:8500,则如下所示,会出现两个provider实例,端口分别为8080, 8081,浏览器访问provider的test接口,http://localhost:8080/test 和 http://localhost:8081/test,两个provider实例返回的id和port是不同的。

转载于:https://www.cnblogs.com/miaoying/p/10305739.html

在consul上注册web服务相关推荐

  1. prometheus获取Consul上注册的服务

    在上一篇<springboot集成prometheus>里,已介绍了springboot和promethues的集成,但是这里有个问题,就是在prometheus.yml里配置需要监听的服 ...

  2. Windows Server 2008 R2之三十二:证书注册WEB服务(一)

    由于证书注册WEB服务的部署方法,和CA与证书注册WEB服务是否安装在同一台计算机,以及安装过程中身份验证方式的选择有关, 以下CA与证书注册WEB服务安装在同一台计算机的设置过程. 实验环境: 所有 ...

  3. 在K8S上的Web服务该怎么做域名解析呢?

    在K8S上的Web服务该怎么做域名解析呢? 我们这个系列的文章一直都在学习和掌握K8S各种组成部分在集群里的角色.作用和使用场景,那么针对今天这个主题任务「给K8S上的Web服务做域名解析」你觉得应该 ...

  4. 学习笔记---Web服务、Remoting、WCF (上) --- Web服务

    自从程序设计诞生起, 如何最大限度的重用代码, 减小编码的重复劳动就是程序员永恒不变的课题. 我们从学习面向对象开始, 先后引入了很多种共享代码的手段, 随着学习的不断深入就越发觉得程序设计的发展过程 ...

  5. 腾讯云服务器/Windows Server 2012 R2 上搭载web服务 动态图图解(http协议)# 谭子

    一.基于Windows Server 2012 r2搭网站/挂网页 在写好网页后,经常想着用链接的形式进行访问(拿手机或者浏览器能直接打开),网上搭建网站的方法很多,这里介绍一种在Windows Se ...

  6. 护士资格证延续注册WEB服务调用失败_服务熔断

    熔断机制是应对服务雪崩效应的一种微服务链路保护机制,当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回"错误"的响应信息.当检测 ...

  7. 在IPCam上搭建WEB服务并通过CGI交互的相关问题

    本文涉及到目前遇到的几个方面的问题,也是分享,也做个记号备忘. 1,thttpd服务器搭建 1)下载:  http://www.acme.com/software/thttpd/ 2)  交叉编译 命 ...

  8. 主机访问虚拟机中linux上的web服务

    环境:主机windows xp 虚拟机centos 6.4 [root@localhost /]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT [roo ...

  9. 使用 UDDI 的 Web 服务描述和发现(第一部分)

    UDDI - Web 服务的全球注册表 UDDI 是一个公共的注册表,旨在以一种结构化的方式来保存有关各公司及其服务的信息.通过 UDDI,人们可以发布和发现有关某个公司及其 Web 服务的信息.这些 ...

最新文章

  1. 快速安装及部署DRBD
  2. ORACLE的analyze及生成方式
  3. 【MFC】MFC消息映射(二)
  4. centos7 下安装mysql5.7
  5. php运城,运城php培训
  6. 万年历c语言设计报告,C语言实训题目设计报告 万年历
  7. 跳转到系统默认的Home
  8. python修饰器_python修饰器
  9. bash shell之数组使用
  10. 【Kali】kali主要工具使用说明(文末附超全思维导图)
  11. MySQL简单技巧(三):教你轻松用information_schema表+python实现表结构同步(上)——理论篇
  12. 分段函数线性化:建模和使用cplex
  13. (Java-17)简单模拟账号密码登陆
  14. 将电脑调成护眼色不一定起到护眼的功能
  15. 12 More Effective C++—条款16/17 (2/8原理与延缓求值)
  16. CobaltStrike上线微信提醒
  17. 【面经】记阿里巴巴校招一轮电话面试
  18. Imagination赢得著名调研机构Linley Group 颁发的2021年度分析师选择奖
  19. mmkv跨进程,Android开发经验的有效总结,系列篇
  20. 学习笔记——结巴分词

热门文章

  1. php xml 格式化,PHP:XML操作
  2. Python入门--列表元素的判断及遍历,判断指定元素在列表中是否存在,列表元素的遍历,
  3. 数据结构—树(大纲)
  4. Codeforces Round #164 (Div. 2):B. Buttons
  5. ZOJ 3981 2017CCPC秦皇岛 A:Balloon Robot
  6. bzoj 2733: [HNOI2012]永无乡(线段树启发式合并)
  7. HDU 2063:过山车(匈牙利算法模板题)
  8. pycharm运行pytorch版pix2pix学习笔记
  9. python机器学习库sklearn——特征选择
  10. js系列教程9-表单元素全解