在consul上注册web服务
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服务相关推荐
- prometheus获取Consul上注册的服务
在上一篇<springboot集成prometheus>里,已介绍了springboot和promethues的集成,但是这里有个问题,就是在prometheus.yml里配置需要监听的服 ...
- Windows Server 2008 R2之三十二:证书注册WEB服务(一)
由于证书注册WEB服务的部署方法,和CA与证书注册WEB服务是否安装在同一台计算机,以及安装过程中身份验证方式的选择有关, 以下CA与证书注册WEB服务安装在同一台计算机的设置过程. 实验环境: 所有 ...
- 在K8S上的Web服务该怎么做域名解析呢?
在K8S上的Web服务该怎么做域名解析呢? 我们这个系列的文章一直都在学习和掌握K8S各种组成部分在集群里的角色.作用和使用场景,那么针对今天这个主题任务「给K8S上的Web服务做域名解析」你觉得应该 ...
- 学习笔记---Web服务、Remoting、WCF (上) --- Web服务
自从程序设计诞生起, 如何最大限度的重用代码, 减小编码的重复劳动就是程序员永恒不变的课题. 我们从学习面向对象开始, 先后引入了很多种共享代码的手段, 随着学习的不断深入就越发觉得程序设计的发展过程 ...
- 腾讯云服务器/Windows Server 2012 R2 上搭载web服务 动态图图解(http协议)# 谭子
一.基于Windows Server 2012 r2搭网站/挂网页 在写好网页后,经常想着用链接的形式进行访问(拿手机或者浏览器能直接打开),网上搭建网站的方法很多,这里介绍一种在Windows Se ...
- 护士资格证延续注册WEB服务调用失败_服务熔断
熔断机制是应对服务雪崩效应的一种微服务链路保护机制,当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回"错误"的响应信息.当检测 ...
- 在IPCam上搭建WEB服务并通过CGI交互的相关问题
本文涉及到目前遇到的几个方面的问题,也是分享,也做个记号备忘. 1,thttpd服务器搭建 1)下载: http://www.acme.com/software/thttpd/ 2) 交叉编译 命 ...
- 主机访问虚拟机中linux上的web服务
环境:主机windows xp 虚拟机centos 6.4 [root@localhost /]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT [roo ...
- 使用 UDDI 的 Web 服务描述和发现(第一部分)
UDDI - Web 服务的全球注册表 UDDI 是一个公共的注册表,旨在以一种结构化的方式来保存有关各公司及其服务的信息.通过 UDDI,人们可以发布和发现有关某个公司及其 Web 服务的信息.这些 ...
最新文章
- 快速安装及部署DRBD
- ORACLE的analyze及生成方式
- 【MFC】MFC消息映射(二)
- centos7 下安装mysql5.7
- php运城,运城php培训
- 万年历c语言设计报告,C语言实训题目设计报告 万年历
- 跳转到系统默认的Home
- python修饰器_python修饰器
- bash shell之数组使用
- 【Kali】kali主要工具使用说明(文末附超全思维导图)
- MySQL简单技巧(三):教你轻松用information_schema表+python实现表结构同步(上)——理论篇
- 分段函数线性化:建模和使用cplex
- (Java-17)简单模拟账号密码登陆
- 将电脑调成护眼色不一定起到护眼的功能
- 12 More Effective C++—条款16/17 (2/8原理与延缓求值)
- CobaltStrike上线微信提醒
- 【面经】记阿里巴巴校招一轮电话面试
- Imagination赢得著名调研机构Linley Group 颁发的2021年度分析师选择奖
- mmkv跨进程,Android开发经验的有效总结,系列篇
- 学习笔记——结巴分词
热门文章
- php xml 格式化,PHP:XML操作
- Python入门--列表元素的判断及遍历,判断指定元素在列表中是否存在,列表元素的遍历,
- 数据结构—树(大纲)
- Codeforces Round #164 (Div. 2):B. Buttons
- ZOJ 3981 2017CCPC秦皇岛 A:Balloon Robot
- bzoj 2733: [HNOI2012]永无乡(线段树启发式合并)
- HDU 2063:过山车(匈牙利算法模板题)
- pycharm运行pytorch版pix2pix学习笔记
- python机器学习库sklearn——特征选择
- js系列教程9-表单元素全解