微服务架构二、初识微服务、分布式架构案例、eurake、Ribben、nacos

一、微服务框架

1、认识微服务,服务架构的演变

 大型项目一定会做分布式架构,降低耦合度 

服务拆分是一方面,将来保证高可用,还要做集群,如何治理?

一些演变如:webService,ESB ,Dubble,Spring Cloud等,目前这些分布式技术也再不断的升级和迭代 (spring Cloud 只是解决服务治理问题)

现在最火的就是微服务了!

最流行的一种就是微服务,跨服务调用-微服务(业务模块对外暴漏业务接口)

微服务架构特征:目的就是实现高内聚,低耦合,降低服务之间的影响

  • 单一职责
  • 面向服务:比如积分服务,需要暴露一个查询积分的接口,将来用户服务就可以去调用该接口,这样就可以获取积分信息了
  • 自治:独立
  • 隔离性强:比如某个积分服务挂了,那么用户服务去调用积分服务的时候发现挂了,需要把故障隔离起来,提前做好容错措施,避免积分服务宕机了导致用户服务也宕机了,即:避免级联问题

 

总结:微服务是分布式架构的一种,分布式架构就是将服务做拆分

2、分布式服务架构案例

微服务这种方案需要技术框架来落地,国内最著名的就是 Spirng Cloud 和 阿里的Dubbo

Spring Cloud 和 Dubbo 他们都需要做服务的拆分形成集群,而集群中的每个服务都要遵循单一职责的原则,而且要面向服务,对外暴露业务接口,这样服务之间就可以做一些相互的调用

这么多服务需要维护,就用到了注册中心,他可以维护微服务里边每个节点的信息,并且去监控这些节点的状态

 微服务技术对比,SpringCloudAlibaba 是 在 SpringCloud的基础上开发的,实现了SpringCloud的技术,并兼容了自己的Dubbo技术 

Spring Cloud :服务调用直接用http协议,就像我们以前编写的Controller 就是http协议的(像Controller里的方法,参数支持HttpServletRequest 等这不是就http模式嘛),只要遵循restful,任何能够发http请求的都可以调用你

Restful风格,就是RestAPI,就是采用http协议,就像大象接口调用利用http协议调用不同模块暴露的接口,或请求保司的接口,因此服务调用就用Feign方式

 像Dubblo如果要升级为SpringCLoudAlibaba+Dubbo 代码是不用动的,动的只是那些外部如注册中心,配置中心等

了解SpringCloud:集成了各种微服务组件,并且基于SpringBoot实现了这些组件的自动装配

Spring Boot 最擅长的事情就是自动装配

Spring Cloud 就是把原生官方开源的组件给整合进来嘞,并且基于Spring Boot做了装配,也就是说我们拿过来就可以用,而不需要复杂的配置

Spring Cloud 底层是基于Spring Boot做了自动装配,所以有版本兼容问题

左边是Spring Cloud版本,右边是Spring Boot版本,也就是说,如果Spring Cloud 用了Greenwich版本,那么SpringBoot就必须用2.1.几的版本,如果用2.0.x的版本,将来可能就会报错,或起不来

SR5用的是2.2.X版本,如果是SR5以上,那就得用2.3.x,我们课程里用的是Hoxton.SR10,所以是SpringBoot版本得是2.3.x

2.1 小节:服务拆分

比如说现在有一个需求,查询订单信息,同时把订单关联的用户信息、商品信息也都查出来

以前的开发模式是 写一个方法去查询订单,在订单查询的过程中得到了用户id,再去数据库里把用户查出来,得到商品id再去数据库里把商品查出来,这些功能全部写到订单模块里,其实是违背了微服务的原则 独立,每个模块是独立的,如果订单模块想要获取用户信息,用户模块需要暴露出一个接口供订单模块去调用

   

导入实用篇的代码cloud-demo,父工程cloud-demo负责管理整个项目的依赖,两个子工程,orderSerivce 和 userService,导入库表,来模拟服务分离

order-service对应的库是cloud_order、user_service对应的库是cloud_user

路径这就是Restful格式,controll 暴露方法遵循http协议,就是用http方式可以请求

所谓restful 风格,就是遵循http协议可以请求

路径里的参数接收可以用 @PathVariable(" ") 来接收 

 两个项目都起来以后,浏览器输入

http://localhost:8081/user/1  请求user服务

http://localhost:8080/order/101  请求order服务

每个服务有单一的职责,order服务查订单,user服务查用户,并且数据库我们也做了分离

 

导入项目后点几show service 就会显示,启动项目后idea有个好处,直接点击端口,就会访问浏览器了

总结: 

 

2.2 小节:微服务远程调用

根据订单id 查询订单和用户,然后将数据组装起来,自己查自己,服务调用,暴露,面相服务

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值