微服务技术栈SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式(一):远程调用、Eureka注册中心、Ribbon负载均衡
2023-12-13 14:45:43
文章目录
一、微服务技术栈
二、微服务
2.1 微服务架构的演变
2.2 微服务技术对比
2.3 SpringCloud
官网:https://spring.io/projects/spring-cloud
三、服务拆分与远程调用
3.1 服务拆分
注意事项:
- 不用微服务不要重复开发相同业务
- 微服务数据独立,不要访问其他数据库的微服务
- 微服务将自己的业务暴露为接口,供其他微服务调用
3.2 远程调用
如果将订单order服务与用户user服务分开,当订单服务想要用户信息时,就可利用RestTemplate远程调用实现。
3.3 服务提供者与消费者
服务提供者:一次业务中,被其他为服务调用的服务(提供接口给其他微服务)
服务消费者:一次业务中,调用其他微服务的服务(调用其它微服务提供的接口)
提供者和消费者是相对的,一个服务既可以是提供者也可以是消费者。
四、Eureka注册中心
4.1 远程调用的问题
4.2 eureka原理
4.3 搭建EurekaServer
4.4 服务注册
可以看到这里启动四个服务,一个eureka的,一个订单order的,两个用户user的
4.5 服务发现与负载均衡
可以看到3.2远程调用中使用的url地址是硬编码形式,灵活性很差。
在4.4中我们启动了两个订单order服务,添加@LoadBalanced注解实现负载均衡,当我们连续两次访问订单服务时,会访问不同的order服务,从而实现负载均衡。
4.6 总结
五、Ribbon实现负载均衡
5.1 负载均衡原理
5.2 负载均衡策略
第一种方式是针对全体,即order服务访问任何微服务都是一样的负载均衡规则;第二种方式是针对具体的,即order服务访问某个具体的微服务的负载均衡规则。
5.3 饥饿加载—懒加载
当order服务要对多个微服务实行饥饿加载,appliaction.xml如下:
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/cloud_order?useSSL=false
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
application:
name: orderservice # 服务名称
mybatis:
type-aliases-package: cn.itcast.user.pojo
configuration:
map-underscore-to-camel-case: true
logging:
level:
cn.itcast: debug
pattern:
dateformat: MM-dd HH:mm:ss:SSS
eureka:
client:
service-url: # eureka的地址信息
defaultZone: http://127.0.0.1:10086/eureka
userservice: # 要访问的具体微服务的名字
ribbon: # 负载均衡规则
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 设置负载均衡规则,方式二:规则为
ribbon:
eager-load:
enabled: true # 开启饥饿加载
clients: # 指定饥饿加载的服务名称
- userservice
5.4 总结
文章来源:https://blog.csdn.net/shendaiyan/article/details/134943969
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!