spring-cloud构建微服务架构

文|作者|文大师
/本文属原创,转载请联系

因为工作原因,无暇更新,最近更新的技术文章还要追溯到去年9月份,近期会恢复更新,还是以spring系列为主,上一次讲述了spring-security-oauth2的相关应用,简单定制适合中小项目,最近正在学习spring-cloud微服务架构,遂决定记录在此以作学习交流之用。

spring-cloud构建微服务架构_第1张图片
spring-cloud.png

随着项目规模扩大以及业务分化,模块服务化成为必然,spring.io因为具备良好的生态结构,微服务架构spring-cloud应运而生,微服务通常伴随着分布式系统的建立,至于微服务的各种利弊,这里就不再赘述了,自请搜索各大社群查看。这里主要讲我自己的看法,国内一般都是使用Dubbo+ZooKeeper实现分布式系统,但个人拙见,RPC协议不可避免的代码层面的耦合度问题让我始终没有好感,REST Full的微服务模式对于国内多变的业务和各种变态的产品需求变更显得更加亲民,故在此选择spring-cloud构建微服务框架,本章属完全理论知识概括,无实际内容,已了解的同学可直接略过。

无论是Dubbo或是别的分布式框架,理论上的框架结构都是相似的,区别仅在于各实现不同而已,一个好的架构体系应该是考虑实际业务选用不同的实现来最终满足产品业务的需要,先来看看分布式一般应该具备的基础服务:

spring-cloud构建微服务架构_第2张图片
基础服务

以上是我认为的最小基础服务,本系列文章也将围绕这些基础服务构建一个微服务基础架构,至于其他理论知识点都不在本系列文章讨论,只关注实用性,代码本身也尽量不涉及逻辑业务,目标是最后集成Docker做到开箱即用,因为本人也是初学,代码可能数次更新,照惯例每次更新都会有一篇文章介绍,代码会打上tag发布到https://github.com/kaenry,错误与改进希望大家指正。

先说说目前已看到的缺点

  • spring生态虽然看似完整,但是属于严格的Java体系,与其他语言配合会非常吃力,再者现在稍微大点的项目都会集成很多不同语言环境,比如最近风靡的NodeJS等,这是可以预见的最大缺陷
  • 分布式事务是一个非常棘手的问题,在本次实战中将采用分化服务,将事务控制在单一服务中从设计上避开此问题,感兴趣的同学可搜索幂等性了解更多
  • 部署可能成为难点

技术选型暂定为Gradle多模块构建项目,jdk 1.8编译环境,spring boot 1.5+spring cloud Dalston.RELEASEDAO层目前在JPAMyBatis之间徘徊,服务之间调用采用REST,工具利用RestTemplate,前端页面采用Vue 2,可能会使用SSR Nuxt,缓存使用Redis,队列使用Rabbit,模拟使用GitHub API...

/
以上

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3b89y7er14g04

你可能感兴趣的:(spring-cloud构建微服务架构)