前辈给的 Spring Cloud 与 Docker 微服务实战,挽救了要被辞退的我
前言
还记得那天天气阴冷,整个人心都是拔凉拔凉的;原因是因为领导找我聊了一下,委婉地说觉得我的技术不太行,能力不突出;要么自己做出改变,要么选择离开。
说实话,我是有点难过的,但是领导既然说了出来,那就说明他给了我一个机会;所以我还是要抓住这个机会,努力提升自己的技术。如果此刻选择了离开,那么今后我遇到了每一个困难都不会想要迈过去,只会选择逃避。
曙光
的确,在一个职位呆久了,还是不应该一成不变,现在的互联网行业也一直在革新,我又有什么理由一直停在原地呢?
也许是我运气好,在工作上遇到了很好地前辈,他了解之后,也觉得我做的决定是对的,遇到困难不应该退缩。
并且,告诉我了很多提升自己的秘诀,并且将学习资料都打包发给了我。其中这一份《Spring Cloud 与 Docker 微服务构架实战》帮助我非常大。我希望能够分享给大家,跟大家一起学习、进步。
接下来一起看看笔记内容:
一、微服务简介
1.什么是微服务架构
微服务架构风格是一种将一个单一应用程序开发为以小组型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用 HTTP 资源 API)。
2.微服务架构的优点与挑战
优点:易于开发和维护、单个微服务启动较快、局部修改容易部署、技术栈不受限、按需伸缩
综上所述,单体应用架构的缺点,恰恰是微服务的优点,而这些优点使得微服务看起来简直非常完美。
然而完美的东西并不存在,下面来讨论使用微服务会带来哪些挑战。
挑战:运维要求较高、分布式固有的复杂性、接口调成本高、重复劳动
3.微服务设计原则
和数据库设计中的 N 范式一样,微服务也有一定的设计原则,这些原则指导我们更加合理地架构微服务。
4.如何实现微服务架构
技术选型、架构图常用组件
![](https://static001.geekbang.org/infoq/41/416cf9360a5c713caaf95b0c423a8f81.png)
有话说:由于资料内容太多,只能放取一部分了。
资料已整理成文档,免费获取,需要的小伙伴可以+ VX: mxk6072
二、微服务开发框架————Spring Cloud
1.Spring Cloud 简介、特点、版本
Spring Cloud 为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用 Spring Cloud 开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式环境中运行良好,包括开发人员自己的笔记本电脑,裸机数据中心,以及 Cloud Foundry 等托管平台。
2.子项目一览
Spring Cloud 的子项目,大致可分成两类,一类是对现有成熟框架”Spring Boot 化”的封装和抽象,也是数量最多的项目;第二类是开发了一部分分布式系统的基础设施的实现,如 Spring Cloud Stream 扮演的就是 kafka, ActiveMQ 这样的角色。对于我们想快速实践微服务的开发者来说,第一类子项目就已经足够使用,如:
Spring Cloud Netflix
是对 Netflix 开发的一套分布式服务框架的封装,包括服务的发现和注册,负载均衡、断路器、REST 客户端、请求路由等。
Spring Cloud Config
将配置信息中央化保存, 配置 Spring Cloud Bus 可以实现动态修改配置文件
Spring Cloud Bus
分布式消息队列,是对 Kafka, MQ 的封装
Spring Cloud Security
对 Spring Security 的封装,并能配合 Netflix 使用
Spring Cloud Zookeeper
对 Zookeeper 的封装,使之能配置其它 Spring Cloud 的子项目使用
Spring Cloud Eureka
Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件中的一部分,它基于 Netflix Eureka 做了二次封装,主要负责完成微服务架构中的服务治理功能。
3.Spring Cloud/Spring Boot 版本兼容性
![](https://static001.geekbang.org/infoq/d9/d9b75b40349b581e46730656e38bf025.png)
![](https://static001.geekbang.org/infoq/fc/fcff0d5c8ea92da56467ef6dd801e70b.png)
三、开始使用 Spring Cloud 实战微服务
1.Spring Cloud 实战前提
spring cloud 不一定适合所有人,他并不是面向零基础开发人员的。
要想玩转它,你可能需要具备以下相关条件:
语言基础:spring cloud 是一个基于 Java 语言的工具条件,所以学习它需要有一定的 Java 基础。
spring boot:spring cloud 是基于 spring boot 构建的,因此它延续了 spring boot 的开发模式。
项目管理与构建工具:就是我们经常使用的 maven。
2.技术储备
3.工具及软件版本
截止当前, spring cloud 相关工具及其版本建议:
JDK:JDK1.8( 官方强烈建议 )
Spring Boot:Spring Boot 1.4.3.RELEASE
Spring Cloud: Spring Cloud Camden SR4
IDE: Spring Tool Suite 3.83 、IntelliJ IDEA、Eclipse 等( 这个随自己爱好 )
Maven: Maven 3.3.9(和 Spring Boot、Spring Cloud 一样,Maven 3.3.x 也是运行在 JDK1.8 上的)
4.服务提供者与服务消费者
服务构建的是分布式系统,各个微服务之间通过网络进行通信。一般我们用服务提供者和服务消费者来描述微服务之间的调用关系。
服务提供者:服务的被调用方,即为其他服务提供服务的服务。
服务消费者:服务的调用方,即依赖其他服务的服务。
![](https://static001.geekbang.org/infoq/0d/0d0349148975bf01453fb8146bab40de.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
5.编写服务提供者
1 进入、2 创建用户微服务、3 点击生成项目、4 创建微服务
6.手动编写项目
7.使用 Spring Initializr 快速创建 Sping Boot 项目
![](https://static001.geekbang.org/infoq/d9/d9ea2da72d0990f0186182374d32c082.png)
![](https://static001.geekbang.org/infoq/d6/d6e6d47b0f2bdd3a9fa503ed6e3693d0.png)
四、使用 Ribbon 实现客户端侧负载均衡
![](https://static001.geekbang.org/infoq/1b/1b4efa502f8d171527ff82b040bc6c1b.png)
五、使用 Feign 实现声明式 REST 调用
![](https://static001.geekbang.org/infoq/fc/fc64551088e5e50190e5d98ee0c0d130.png)
![](https://static001.geekbang.org/infoq/82/8202cb94d25d3eaf03aa03aa67890751.png)
六、使用 Hystrix 实现微服务的容错处理
![](https://static001.geekbang.org/infoq/91/91001cefae8851a80f773b6ee8f2afae.png)
七、使用 Zuul 构建微服务网关
![](https://static001.geekbang.org/infoq/6e/6e82d1f5a4b4bc4d67d44c857fc249fe.png)
使用 Spring Cloud Config 统一管理微服务配置
![](https://static001.geekbang.org/infoq/9e/9ea293668d0d376c0cdcd0ef25fcaa11.png)
总结
这份《Spring Cloud 与 Docker 微服务构架实战》很好地帮助了我提升自己,成功地保住了工作,并且工资往上涨了 6K。
非常感谢前辈的帮助,我希望这份资料能够帮助更多的人,提升自己的能力,去到更远的远方!欢迎大家一起分享自己的故事,一起讨论工作经验!
当然,我手里也有其他的资料,如有需求可一起打包发给你!
资料已整理成文档,免费获取,需要的小伙伴可以+ VX: mxk6072
评论