搭建自己的SpringCloud微服务系统

一、为什么要用SpringCloud搭建微服务系统

上个月发布了第一个单页面应用以来,一直想做一个配套的用户后台系统,能够存储上传用户制作的卡片,分类归纳,以及发布分享出来。计划中是准备采用微服务架构,把这个用户系统切分成一个用户模块,和之后扩展的其他模块整合在一起的,不过由于拖延症一直没有动手,最近又有一个新的idea,就觉得不得不赶紧把微服务系统提上日程了,于是就有了这篇文章。

说到微服务,就不得不提到现在很火的两个分布式微服务框架:SpringCloud和Zookeeper+dubbo,Zookeeper的话自身只是一个分布式应用协调系统,使用zk来搭建微服务的话还需要dubbo等其他组件,SpringCloud则自带了一整套微服务组件,搭建起来更加方便。再加上我的技术栈上用的最多的就是SpringBoot,所以对Spring全家桶有天然好感,所以这里我采用了SpringCloud作为我的微服务系统的框架。

二、什么是微服务系统

这两天看到一句话,非常认同:要学习一项技术,首先都必须明白为什么需要它。

所以我们必须先搞清楚,微服务是什么。这里举一个简单的例子:小明很会盖房子,烧砖、打地基、砌墙样样精通,一个人就能轻松盖出一栋三层海景小别墅,这就是传统的单体架构。

但是后面小明的项目做大了,接了占地几千亩的大项目,于是他就成立了公司,招了很多人来帮他一起盖,并把这些人分为不同工种:烧砖工、地基工、砌墙工等等,但这么多人公司也塞不下,而且不好管理啊,于是他就给每个工种在外面成立了相应的子公司,把子公司的信息统一注册在总公司里,平时经常沟通交流,有项目来了就联系所需要的工种出来干活,这就是所谓的微服务架构了。

其实简单来说,微服务就是将单体架构的各项功能垂直拆分开来,并分发出去,这样一可以降低单一服务器的压力,二可以减少项目冗余,把类似的功能代码集合在一起,做到代码复用。

当然这只是最简单的微服务概念,实际操作起来会更加复杂,例如碰到数据库性能瓶颈,如何分库分表,如何保证分布式事务的正确执行,如何保证子系统间的调用正确实时地执行等等,这些问题等之后有时间再专门研究后写一下。

三、具体实现

实现方面我暂时还只是有个大概的构想,还没有实践,所以这里暂时就先放一下我的设计想法,之后实现了再回来补充。

首先因为我只有一台服务器,所以所有的服务只能先部署到这台服务器上,所以负载均衡、熔断器什么的可以先往后推一推,主要需要优先实现的是业务功能性上的组件:服务注册发现服务声明式调用两项。

也就是先写出用户中心的系统,然后加入微服务注册发现组件Eureka,这样用户中心就能够注册到服务发现中心。

之后我还需要一个写一个Eureka的注册中心,用来接收各个子系统的注册,方便其他系统调用。

最后来写一个上个月发布的独立应用CardPoster的后台系统,加入Eureka以注册到服务中心,以及服务声明调用组件Feign来调用用户中心系统,实现用户数据的传递、写入数据库。

以上差不多就是目前关于微服务系统的构想了,之后如果遇到什么问题再回来补充。

本文系作者 @ 原创发布在 Luninousail ' Blog。未经许可,禁止转载。

喜欢()
评论 (0)
183 文章
4 评论
17 喜欢
Top