阿八博客
  • 100000+

    文章

  • 23

    评论

  • 20

    友链

  • 最近新加了很多技术文章,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

SpringCloud微服务学习笔记

欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/jsh/2019/1010/116487.html

SpringCloud微服务学习笔记

项目地址: https://github.com/taoweidong...

单体架构(Monolithic架构)

相对于单体架构和SOA,它的主要特点是组件化、松耦合、自治、去中心化,体现在以下几个方面:

一组小的服务
服务粒度要小,而每个服务是针对一个单一职责的业务能力的封装,专注做好一件事情
独立部署运行和扩展
每个服务能够独立被部署并运行在一个进程内
这种运行和部署方式能够赋予系统灵活的代码组织方式和发布节奏,使得快速交付和应对变化成为可能
独立开发和演化
技术选型灵活,不受遗留系统技术约束
合适的业务问题选择合适的技术可以独立演化
服务与服务之间采取与语言无关的API进行集成
相对单体架构,微服务架构是更面向业务创新的一种架构模式

独立团队和自治

 团队对服务的整个生命周期负责,工作在独立的上下文中,自己决策自己治理,而不需要统一的指挥中心
团队和团队之间通过松散的社区部落进行衔接

​ 我们可以看到整个微服务的思想就如我们现在面对信息爆炸、知识爆炸是一样的:通过解耦我们所做的事情,分而治之以减少不必要的损耗,使得整个复杂的系统和组织能够快速的应对变化

微服务优点

每个微服务都很小,这样能聚焦一个指定的业务功能或业务需求
微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成
微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的
微服务能使用不同的语言开发
微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如Jenkins, bamboo
一个团队的新成员能够更快投入生产
微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果
无需通过合作才能体现价值
微服务允许你利用融合最新技术
微服务只是业务逻辑的代码,不会和HTML,CSS 或其他界面组件混合
微服务能够即时被要求扩展
微服务能部署中低端配置的服务器上
易于和第三方集成
每个微服务都有自己的存储能力,可以有自己的数据库
也可以有统一数据库

微服务架构的缺点

微服务架构可能带来过多的操作
需要DevOps技巧 (http://en.wikipedia.org/wiki/...).可能双倍的努力
分布式系统可能复杂难以管理
因为分布部署跟踪问题难
当服务数量增加,管理复杂性增加

技术介绍

服务注册中心:Eureka

Eureka是Spring Cloud Netflix微服务套件中的一部分,可以与Springboot构建的微服务很容易的整合起来

Eureka包含了服务器端和客户端组件

服务器端,也被称作是服务注册中心,用于提供服务的注册与发现
Eureka支持高可用的配置,当集群中有分片出现故障时,Eureka就会转入自动保护模式,它允许分片故障期间继续提供服务的发现和注册,当故障分片恢复正常时,集群中其他分片会把他们的状态再次同步回来

客户端组件包含服务消费者与服务生产者
在应用程序运行时,Eureka客户端向注册中心注册自身提供的服务并周期性的发送心跳来更新它的服务租约
同时也可以从服务端查询当前注册的服务信息并把他们缓存到本地并周期性的刷新服务状态

参考:https://blog.csdn.net/chengqi...

服务断路器:Hystrix

所谓的熔断机制和日常生活中见到电路保险丝是非常相似的,当出现了问题之后,保险丝会自动烧断,以保护我们的电器, 那么如果换到了程序之中呢?

当现在服务的提供方出现了问题之后整个的程序将出现错误的信息显示,而这个时候如果不想出现这样的错误信息,而希望替换为一个错误时的内容

参考:https://www.cnblogs.com/leeSm...

https://www.cnblogs.com/yepei...

断路器聚合监控:Hystrix Turbine

​ 看单个的Hystrix Dashboard的数据并没有什么多大的价值,要想看这个系统的Hystrix Dashboard数据就需要用到Hystrix Turbine
Hystrix Turbine将每个服务Hystrix Dashboard数据进行了整合
Hystrix Turbine的使用非常简单,只需要引入相应的依赖和加上注解和配置就可以了

参考:https://www.cnblogs.com/allal...

微服务网关:Zuul

zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用

Zuul 在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架
Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门

zuul的工作原理

zuul的核心是一系列的filters, 其作用可以类比Servlet框架的Filter,或者AOP

zuul把Request route到 用户处理逻辑 的过程中,这些filter参与一些过滤处理,比如Authentication,Load Shedding等

原理:

参考:https://blog.csdn.net/qq92486...

项目实际测试

测试:基本微服务测试

启动微服务注册中心Eureka:microservice-discovery-eureka 账户:admin 密码:admin123

访问注册中心地址:http://127.0.0.1:8761/

启动服务提供者:microservice-provider-user启动服务消费者:microservice-consume-movie打开注册中心检查服务是否注册访问消费者接口1:http://127.0.0.1:9100/say 此时没有进行服务间的调用,只是单纯的访问服务消费者访问消费者接口2:http://127.0.0.1:9100/say2 此时消费者调用提供者,进行服务间的通讯,此时服务请求没有参数并且返回数据为字符串访问消费者接口3:http://127.0.0.1:9100/getUserInfo/1 此时进行服务间通讯,并且请求带有参数返回数据为对象对应脚本:microservice-test01.bat

测试:客户端负载均衡服务测试

启动微服务注册中心Eureka:microservice-discovery-eureka 账户:admin 密码:admin123

访问注册中心地址:http://127.0.0.1:8761/

启动服务提供者:microservice-provider-user1启动服务提供者:microservice-provider-user2启动服务消费者:microservice-consume-movie-feign对应脚本:microservice-test02.bat

测试:Hystrix熔断机制

启动Eureka注册中心:microservice-discovery-eureka启动服务提供者:microservice-provider-user启动服务消费者: microservice-consume-movie-feign-hystrix 其中包括Hystrix熔断机制的方法回退

测试:Hystrix熔断控制面板

启动Eureka注册中心:microservice-discovery-eureka启动服务提供者:microservice-provider-user启动服务消费者: microservice-consume-movie-feign-hystrix 其中包括Hystrix熔断机制的方法回退
注意:此项目必须要确保被监控的服务打开了Actuator(依赖spring-boot-starter-actuator),
启动程序开启了断路器(@EnableCircuitBreaker注解)
启动Hystrix DashBoard监控项目: microservice-hystrix-dashboard
注意:此项目无需注册到Eureka中访问注册中心: http://127.0.0.1:8761/ 检查服务是否启动访问服务消费者: http://127.0.0.1:9103/say2访问监控面板: http://127.0.0.1:9090/hystrix
填写相应参数:http://127.0.0.1:9103/hystrix.stream

测试:路由规则

启动服务注册中心项目:microservice-discovery-eureka启动服务提供者项目:microservice-provider-user启动服务消费者项目:microservice-consume-movie-ribbon启动路由网关项目: microservice-getway-zuul访问:http://127.0.0.1:8761/ 检查服务是否启动成功访问:http://127.0.0.1:8040/microservice-consume-movie-ribbon/say2 检查服务是否成功访问:http://127.0.0.1:8040/microservice-provider-user/getUser 检查服务是否成功

Zuul路由规则:http://ZUUL_HOST:ZUUL_PORT/微服务在Eureka上的serviceId/会被转发到serviceId对应的微服务上**

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yMcIFEFz-1570629224449)(C:UsersTaowdAppDataRoamingTyporatypora-user-images1551367415228.png)]

测试:负载均衡功能

启动服务注册中心:microservice-discovery-eureka启动多个服务提供者:microservice-provider-user(端口不同)启动路由网关项目:microservice-getway-zuul访问:http://127.0.0.1:8761/ 检查服务是否启动成功

多次访问192.168.224.1:8040/microservice-provider-user/hello,会发现两个服务提供者循环显示,说明Zuul可以使用Ribbon达到负载均衡的效果

测试:Hystrix容错与监控功能

启动服务注册中心项目:microservice-discovery-eureka启动服务提供者项目:microservice-provider-user启动服务消费者项目:microservice-consume-movie-ribbon启动路由网关项目: microservice-getway-zuul启动服务监控项目: microservice-hystrix-dashboard访问:http://127.0.0.1:8761/ 检查服务是否启动成功访问:192.168.224.1:8040/microservice-consume-movie-feign-hystrix3/say2 获得预期效果访问服务监控:http://127.0.0.1:9090/hystrix 输入:http://192.168.224.1:8040/hystrix.stream(网关地址),结果显示

欢迎访问个人博客: http://www.taoweidong.com/

相关文章

暂住......别动,不想说点什么吗?
  • 全部评论(0
    还没有评论,快来抢沙发吧!