springcloud_01微服务概念

2 微服务的实现:
    2.1 RPC和HTTP:
    RPC: 远程过程调用,类似的还有RMI.自定义数据格式,基于原生的TCP通信,早期的webservice,现在热门的dubbo,都是RPC的典型代表
    HTTP: 基于TCP,规定了数据传输格式,也可以用来远程服务调用,缺点是封装臃肿,优势是对服务的提供和调用方法没有任何限定,自由灵活,更符合微服务的概念
          现在热门的Rest风格,就可以通过http协议来实现
    如果你们公司全部采用Java技术栈,那么使用dubbo作为微服务架构是不错的选择
    相反,如果技术栈多样化,而且你更青睐于Spring家族, 那么使用SpringCloud搭建微服务是不二之选,使用HTTP方式实现服务之间的调用

3 HTTP客户端工具
    既然微服务选择了HTTP,那么我们就需要考虑自己来实现对请求和响应的处理,不过开源世界已经有很多http的客户端工具,能够帮我们做这些事情
    如: HttpClient(阿帕奇), OKHttp, HttpUrlConnection(JDK原生)
    不过这些不同的客户端, API各不相同, 那么我们学习Spring的RestTemplate

4 Spring的RestTemplate:
    RestTemplate对基于HTTP的客户端进行了封装,并且实现了对象与json的序列化和反序列化,非常方便,RestTemplate并没有限定Http的
    客户端类型,而是进行了抽象,目前常用的3种都有支持
    HttpClient, OkHttp, JDK原生的HttpUrlConnecion(默认的)


5 SpringCloud是Spring旗下的项目之一:
    Netflix:
        Eureka: 注册中心
        Zuul: 服务网关
        Ribbon: 负载均衡
        Feign: 服务调用
        Hystix: 熔断器

实现两台服务器, 一台服务器访问另外一台服务器的服务, 实现RestTemplate的HTTP请求方式

github: https://github.com/2402zmybie/cloud01
其中user-service对外提供了查询用户的接口; consumer通过RestTemplate访问接口,查询用户数据. 但存在问题: 

1 在consumer中, 我们把url地址硬编码到了代码中, 不方便后期维护

2 consumer需要记忆user-service的地址, 如果出现变更,可能得不到通知,地址将失效

3 consumer不清楚user-service的状态, 服务器挂掉也不知道

4 user-service只有1台服务,不具备高可用性

5 即使user-service形成集群, consumer还需自己实现负载均衡(请求的平均分发)

 

以上的问题, 我们都将在SpringCloud中得到答案 

Eureka注册中心:

Eureka : 就是服务注册中心(本身就是一个服务, 可以是一个集群), 对外暴露自己的地址

提供者:启动后向Eureka注册自己的信息(地址, 提供什么服务)

消费者: 向Eureka订阅服务, Eureka会将对应服务的所有提供者地址列表发给消费者,并且定期更新

心跳(续约): 提供者定期通过http方式向Eureka刷新自己的状态

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值