佛山网站建设推广服务,北京市建设工程发包承包交易中心网站,wordpress可视化编辑器 windows,商用图片的网站JavaWeb_SpringCloud微服务_Day1-eureka, ribbon, nacos 认识微服务微服务技术对比 分布式服务架构案例远程调用 eureka注册中心原理搭建EurekaServer服务注册服务发现 Ribbon负载均衡修改负载均衡饥饿加载 nacos注册中心快速入门eureka和nacos对比 来源 认识微服务
微服务技术… JavaWeb_SpringCloud微服务_Day1-eureka, ribbon, nacos 认识微服务微服务技术对比 分布式服务架构案例远程调用 eureka注册中心原理搭建EurekaServer服务注册服务发现 Ribbon负载均衡修改负载均衡饥饿加载 nacos注册中心快速入门eureka和nacos对比 来源 认识微服务
微服务技术对比
DubboSpringCloudSpringCloudAlibaba注册中心zookeeper, RedisEureka, ConsulNacos, Eureka服务远程调用Dubbo协议Feign(http协议)Dubbo, Feign配置中心无SpringCloudConfigSpringCloudConfig, Nacos服务网关无SpringCloudGateway, ZuulSpringCloudGateway, Zuul服务监控和保护dubbo-admin, 功能弱HystrixSentinel
分布式服务架构案例
远程调用
注册RestTemplate/*** 创建RestTemplate并注入Spring容器* return*/
Bean
public RestTemplate restTemplate(){return new RestTemplate();
}服务远程调用RestTemplateAutowired
private RestTemplate restTemplate;public Order queryOrderById(Long orderId) {// 1.查询订单Order order orderMapper.findById(orderId);// 2. 利用RestTemplate发起http请求, 查询用户// 2.1 url路径String url http://localhost:8081/user/order.getUserId();// 2.2 发送http请求, 实现远程调用User user restTemplate.getForObject(url, User.class);// 3 封装user到orderorder.setUser(user);// 4.返回return order;
}eureka注册中心
原理
在Eureka架构中, 微服务角色有两类:
EurekaServer: 服务端, 注册中心 记录服务信息心跳监控 EurekaClient: 客户端 Provider: 服务提供者 注册自己的信息到EurekaServer每隔30秒向EurekaServer发送心跳 Consumer: 服务消费者 根据服务名称从EurekaServer拉取服务列表基于服务列表做负载均衡, 选中一个微服务后发起远程调用
搭建EurekaServer
引入eureka-server依赖!-- eureka服务端 --
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-server/artifactId
/dependency添加EnableEurekaServer注解EnableEurekaServer
SpringBootApplication
public class EurekaApplication {public static void main(String[] args) {SpringApplication.run(EurekaApplication.class, args);}
}在application.yml中配置eureka地址server:port: 10086
spring:application:name: eurekaserver
eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka/服务注册
引入eureka-client依赖!-- eureka客户端 --
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId
/dependency在application.yml中配置eureka地址启动多个实例: 右键服务copy configuration, 在启动项vm option中修改端口号
服务发现
给RestTemplate添加LoadBalanced注解, 负载均衡LoadBalanced
public RestTemplate restTemplate(){return new RestTemplate();
}用服务提供者的服务名称远程调用// String url http://localhost:8081/user/order.getUserId();
String url http://userserver/user/order.getUserId();Ribbon负载均衡
修改负载均衡
代码方式 (全体)/*** 更换负载均衡策略为随机* return*/
Bean
public IRule randomRule()
{return new RandomRule();
}
erer配置文件方式 (只针对某个微服务)userserver: # 给某个微服务配置负载均衡规则这里是userserver服务ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则 饥饿加载
Ribbon默认是采用懒加载, 即第一次访问时才会创建LoadBalanceClient, 请求时间很长.饥饿加载在项目启动时创建, 降低第一次访问的耗时ribbon:eager-load: # 饥饿加载enabled: trueclients: userserver # 指定服务nacos注册中心
快速入门
父工程添加spring-cloud-alibaba管理依赖!-- nacos的管理依赖 --
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion2.2.5.RELEASE/versiontypepom/typescopeimport/scope
/dependencynacos客户端依赖!-- nacos客户端依赖 --
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId
/dependency配置文件spring:cloud:nacos:server-addr: localhost:8848 # nacos服务地址集群配置spring:cloud:nacos:server-addr: localhost:8848 # nacos服务地址discovery:cluster-name: SH # 集群地址NacosRule负载均衡策略userserver: # 给某个微服务配置负载均衡规则这里是userservice服务ribbon:# NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则优先选择同集群服务实例列表本地集群找不到提供者, 才去其他集群寻找, 并且会报警告确定了可用实例列表后, 再采用随机负载均衡挑选实例 命名空间spring:cloud:nacos:discovery:namespace: xxx # 命令空间namespace用来做环境隔离每个namespace都有唯一id不同namespace下的服务不可见
eureka和nacos对比
nacos非临时实例spring:cloud:nacos:discovery:ephemeral: false # 设置为非临时实例nacos与eureka的共同点 都支持服务注册和服务拉取都支持服务提供者心跳方式做健康检测 nacos与eureka的区别 nacos支持服务端主动检测提供者状态: 临时实例采用心跳模式, 非临时实例采用主动检测模式临时实例心跳不正常会被剔除, 非临时实例则不会被剔除nacos支持服务列表变更的消息推送模式, 服务列表更新更及时nacos集群默认采用ap方式(强调数据的可用性), 当集群中存在非临时实例时, 采用cp模式(强调数据的可靠性和一致性); eureka采用ap方式
来源
黑马程序员. SpringCloud微服务