微服务: 步步为营

上图是我从 spring.io 首页介绍截图过来的,简洁而不失霸气!

最近两年,Spring Boot 伴随着微服务的发展而越发火热,很多公司也纷纷开始使用 Spring BootSpring Cloud 来开发自己的服务,Java开发的浪潮愈发汹涌。这年头不知道微服务不知道 Spring Boot 就感觉生活缺点什么似的。我们还是抱着学习的心态来学习一下这个时代宠儿吧,不要盲目吹捧就可以了。

Pivotal 提供的 Spring Boot 是一套基于Java语言的开发框架,之前的 Spring 框架配置比较复杂,设计 Spring Boot 目的是用来简化 Spring 的开发过程,一定程度的去尽力解放程序员,换句话说 Spring Boot 是建立在 Spring 基础之上的。Spring Boot 更像是一个框架仓库,它拥有你基本想要的东西,简单到只需要你添加配置就可以,并且 Spring Boot 可以帮你处理各个库之间的依赖兼容问题,不用我们去关心这些问题。“约定优于配置” 的思想贯穿 Spring Boot 的始终,约定优于配置(Convention Over Configuration),也被称之为按约定编程,它是一种软件设计范式、思想,约定优于配置旨在减少开发人员需做决定的数量、获得简单的好处,而又不失灵活性,对于我们来说是一种编程的新体验。

为了自己学习,也为了方便想学习 Spring Boot 的小伙伴,准备搞一套 Spring Boot 系列文章来滋润一下无聊的生活。

Spring Boot 系列文章我准备采用以终为始的方式来分享,所谓的以终为始就是我们先给自己顶个目标,然后再想方案来完成目标,细化每个实施步骤。

至于什么是 微服务,什么是 Spring Boot 大家可以去网上搜索了解,后续分享的文章中我也会渗透式的分享一下相关的知识。这里强调一点,微服务不等于 Spring Boot 或者 Spring Cloud,他们只是实现微服务的一种手段而已。

学习要求

1、你得会Java基础知识,至少会用JDK的基本类。如果不会,赶紧去补补,学习没那么难,只要你别太懒!

2、你要使用过IDEA这个无与伦比的集成开发工具,放弃 Eclipse 吧!不是它不好,只是IDEA太优秀。

3、英语要凑合,有没有四级证书真的无所谓,官方文档大多都是英文的却都是精华。

4、坚强的毅力,乐观的心态,很多困难都是纸老虎,当你搞定它了之后你就知道自己有多厉害了。

5、多运动多思考,身体是革命的本钱,其他的都是扯淡!

以终为始

大目标:基于 Spring Cloud 构建微服务开发一个APP。

实施计划:

1、了解和学习 Spring Boot

目标:使用 Spring Boot 构建一个简单的服务,客户端或者WEB端可访问该服务。

如果你不会移动开发,可以使用C/C++、C#或者JS来开发一个客户端,哪怕终端程序也是可以的。

刚开始学习的时候,如果遇到不理解的知识点先记下来,不要因为这些东西阻挡你的学习,等学到一定的时候再回过头来研究,这就好比你刚上球场学习打篮球一样,能先稳稳的拿住球再传给队友就很了不起了,得不得分那是后面的事情。

在这一部分,我们做好登录和注册即可。

2、深入学习 Spring Boot

继续学习 Spring Boot 的知识,用户完成了注册,然后登录进入我们的APP需要给他们展示更加丰富的场景。这个时候需要配合后台服务进行开发工作,借助这次机会可以更加深入的学习和认识 Spring Boot了。

3、 了解和学习 Spring Cloud

在这个阶段,需要使用 Spring Cloud 改造我们已经开发的单体应用服务了。

微服务的关键不是如何将你的服务拆的如何 “微”,而是如何做好服务治理。于是在 Spring Boot 基础之上便有了 Spring Cloud,它是完全基于 Spring Boot 开发的,对外提供了在微服务架构中如何做好服务治理的一套解决方案。

学习完 Spring Boot 之后需要了解一些关于 Spring Cloud 的知识,进入 Spring Cloud 的世界一窥究竟,这部分我们一起学习如何做服务治理,服务部署等知识。

4、做一次架构师

综合 Spring BootSpring Cloud 相关的知识,我们重新梳理一下之前做的东西。把整个系统串起来,画出流程图和架构图。

设计包括服务本身的设计、数据库和缓存等设计。

5、完善和优化服务

借鉴业界好的案例对我们的服务进行优化,包括数据库、缓存、API和其他设计做一次重构,并对我们这个微项目进行一次复盘。

最重要的是要奖励一下自己。


Spring Boot 系列文章我会努力坚持写下去,希望能帮到大家。

干就完了!

改变,从你我相识开始~

坚持原创技术分享!