摘要:环境搭建注册中心依赖如下所示配置应用启动端口注册中心管理中的应用名称登陆注册管理中的的账号密码是否把自己注册到注册中心是否从上来获取服务的注册信息启动注册中心启动后访问登陆界面输入设置的账号密码进
</>复制代码
环境
Java version 1.8
SpringBoot version 2.1.7
</>复制代码
搭建注册中心 Eureka-server
pom.xml 依赖如下所示:
</>复制代码
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-security
org.springframework.boot
spring-boot-starter-security
javax.xml.bind
jaxb-api
com.sun.xml.bind
jaxb-impl
2.3.0
org.glassfish.jaxb
jaxb-runtime
2.3.0
javax.activation
activation
1.1.1
配置 Eureka application.properties
</>复制代码
# 应用启动端口
server.port=8090
# 注册中心管理中的 应用名称
spring.application.name=eureka-server
# 登陆注册管理中的的账号密码
spring.security.user.roles=SUPERUSER
spring.security.user.name=eureka
spring.security.user.password=123456
# 是否把自己注册到注册中心
eureka.client.register-with-eureka=true
# 是否从eureka上来获取服务的注册信息
eureka.client.fetch-registry=false
eureka.instance.hostname=localhost
eureka.client.serviceUrl.defaultZone=http://eureka:123456@localhost:8090/eureka
启动注册中心 启动后访问(http://127.0.0.1:8090)
登陆界面
</>复制代码
2. 输入设置的账号密码(user:eureka pwd:123456)
3. 进入注册中心页面
需要注意的是 需要处理下CSRF不然服务提供者注册不进来 启动入口文件如下
EurekaServiceApplication.java
</>复制代码
@EnableEurekaServer
@SpringBootApplication
public class EurekaServiceApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServiceApplication.class, args);
}
/**
* 忽略 uri /eureka/** 的CSRF检测
*/
@EnableWebSecurity
static class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().ignoringAntMatchers("/eureka/**");
super.configure(http);
}
}
}
简单的注册中心已经搭建完成
</>复制代码
搭建服务提供者 Provider-service
首先还是配置文件 application.properties
</>复制代码
服务端口
server.port=8081
# 服务应用名称
spring.application.name=provider-ticket
# 是否允许使用ip连接
eureka.instance.ip-address=true
# 注意 http://用户名:密码@主机:端口/eureka 需要与服务中心里配置的一样
eureka.client.serviceUrl.defaultZone=http://eureka:123456@localhost:8090/eureka
启动 项目后会自动把服务注册到配置的服务中心
以下是我做的测试代码
TicketController.java
</>复制代码
package com.yourdream.providerticket.controller;
import com.yourdream.providerticket.service.TicketService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TicketController {
@Autowired
TicketService ticketService;
@GetMapping("/ticket")
public String getTicket(){
System.out.println("server-8081");
return ticketService.getTicket();
}
}
TicketService
</>复制代码
package com.yourdream.providerticket.service;
import org.springframework.stereotype.Service;
@Service
public class TicketService {
public String getTicket()
{
return "《哪吒之魔童降世》";
}
}
ProviderTicketApplication
</>复制代码
package com.yourdream.providerticket;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ProviderTicketApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderTicketApplication.class, args);
}
}
到此一个简单的服务提供者搭建完成
</>复制代码
搭建服务消费者 Consumer-user
首先还是配置文件 application.properties
</>复制代码
server.port=8100
spring.application.name=consumer-user
eureka.client.serviceUrl.defaultZone=http://eureka:123456@localhost:8090/eureka
eureka.instance.ip-address=true
首先需要明确 消费者与服务提供者之间通讯协议是HTTP
看下实例代码
启动入口 ConsumerUserApplication.java
</>复制代码
package com.yourdream.consumeruser;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@EnableDiscoveryClient //开启发现服务功能
@SpringBootApplication
public class ConsumerUserApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerUserApplication.class, args);
}
@LoadBalanced //开启负载均衡器
@Bean //注册 RestTemplate 服务
public RestTemplate restTemplate()
{
return new RestTemplate();
}
}
UserController.java
</>复制代码
package com.yourdream.consumeruser.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
public class UserController {
// 帮助我们向 注册的实例服务 发起http请求
@Autowired
RestTemplate restTemplate;
@GetMapping("/buy")
public String buyTicket(String name)
{
//PROVIDER-TICKET 服务提供者名称
String forObject = restTemplate.getForObject("http://PROVIDER-TICKET/ticket", String.class);
return name + "购买了" + forObject;
}
}
启动服务 访问http://127.0.0.1:8100/buy
到此一个简单的服务消费者搭建完成
</>复制代码
原文
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/76261.html
摘要:同时除了对号码自身的要求,业务还对号生成系统的可用性要求极高,想象一下,如果生成系统瘫痪,整个美团点评支付优惠券发券骑手派单等关键动作都无法执行,这就会带来一场灾难。 分布式id主要用到哪些地方 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,...
摘要:利用分布式数据库实现了物理分离,逻辑统一的优势。这样的基本特点让分布式数据库具有数据独立性和位置透明性,局部应用响应速度升级。在互联网大潮的背景下,中国的分布式数据库出现,这也填补了国内数据库的空白。 原文地址:http://digi.163.com/17/1114/0... 分布式数据库在今年突然成为热点技术。这背后究竟有哪些环境变化导致了这种技术演进,分布式数据库的优势在哪儿?这种...
阅读 2133·2023-04-26 00:16
阅读 3568·2021-11-15 11:38
阅读 3292·2019-08-30 12:50
阅读 3255·2019-08-29 13:59
阅读 824·2019-08-29 13:54
阅读 2614·2019-08-29 13:42
阅读 3403·2019-08-26 11:45
阅读 2265·2019-08-26 11:36