专栏首页IT笔记单体转向微服务架构-基础篇

单体转向微服务架构-基础篇

前言

目前从事于教育行业,尽管如今用户量并不是特别多,但我们的产品有点庞大。基于目前的单体架构,有众多的弊端,由于前期用户量并不多,产品迭代不是很频繁,相应的问题并没有凸显。但是随着团队越来越大,相应的沟通成本、管理成本、人员协调成本显著增加。引起缺陷的原因组合多,导致分析、定位、修复缺陷的成本响应增高。在自动化测试机制不完善的情况下,易导致“修复越多,缺陷越多”的恶性循环。

我们一直正在关注当前的流行趋势,并试图从单体转向微服务架构。鉴于人员配比以及开发周期,我们不可能推到重构。

那么如何使用微服务改造遗留系统,我们基于以下几点考虑:

  • 最小修改
  • 功能剥离
  • 数据解耦
  • 迭代替换

首先,我们整理边缘业务,把后端服务抽离出来。新的框架使用SpringBoot + JPA(相对来说,我们有一套快速开发的脚手架);由于是前后端分离,认证采用相对简单的JWT;鉴于后期会拆分为多个服务,这里使用Zuul作为网关,Eureka作为服务注册中心。

Spring Cloud

Spring Cloud基于Spring Boot实现,使用HTTP的RESTful风格API作为调用方式。它所包含的多个子项目共同构建了微服务架构体系。

Spring Boot

在使用Spring开发时,通常需要完成Spring框架及其他第三方工具配置文件的编写,非常麻烦。Spring Boot通过牺牲项目的自由度来减少配置的复杂度,约定一套规则,把这些框架都自动配置集成好,从而达到“开箱即用”。

Netflix Eureka

Spring Cloud 的服务注册中心提供服务注册、服务发现、负载均衡等功能。

Netflix Hystrix

当某个服务发生故障之后,则触发熔断机制(Hystrix)向服务调用方返回结果标识错误,而不是一直等待服务提供方返回结果,这样就不会使得线程因调用故障服务而被长时间占用不释放,避免了故障在分布式系统中的蔓延。

Netflix Zuul

代理各模块提供的服务,统一暴露给第三方应用。提供动态路由、监控、弹性、全等的边缘服务。

Config Server

分布式架构下多微服务会产生非常多的配置文件,分布式配置中心(Config Server)将所有配置文件交由GIT或SVN进行统一管理,避免出错。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 单体转向微服务架构-基础篇

    小柒2012
  • 什么是SOA

    讲在前面的话: 若企业缺乏对服务变更的控制和规则,那么一个服务在经过几个项目之后,就很有可能被随意更改成多个版本,将来变成什么样更是无法预测。久而久之,降低了服...

    小柒2012
  • 微服务架构

    微服务架构 单体架构能够很好地应对简单的业务系统。但是随着业务的扩张,功能的不断增加,单体架构面临着越来越多的挑战: ? 维护成本增加 团队越来越大,相应的...

    小柒2012
  • 单体转向微服务架构-基础篇

    小柒2012
  • 如何在面试中回答Spring Cloud问题?

    Spring cloud流应用程序启动器是基于Spring Boot的Spring集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生...

    用户5927304
  • 放弃 Dubbo,选择最流行的 Spring Cloud 微服务架构实践与经验总结

    在使用 Spring Cloud 之前,我们对微服务实践是没有太多的体会和经验的。从最初的开源软件云收藏来熟悉 Spring Boot,到项目中的慢慢使用,再到...

    51CTO技术栈
  • Spring Cloud 简介

    Spring Cloud 是一系列有序框架的集合,其主要的设施有,服务发现与注册,配置中心,消息总线,负载均衡,断路器,数据监控等,通过Spring Boot的...

    mySoul
  • 腾讯,开源了,高性能 RPC 框架,是要干DUBBO 吗?

    Tars是基于名字服务使用Tars协议的高性能RPC开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。

    搜云库技术团队
  • 腾讯推出高性能 RPC 开发框架

    Tars是基于名字服务使用Tars协议的高性能RPC开发框架,同时配套一体化的服务治理平台,帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用。

    会呼吸的Coder
  • 后台必备意识——柔性可用

    柔性可用是指:当条件有限而不能向用户提供完美服务时,可以以柔性的方式提供有损的服务。

    windealli

扫码关注云+社区

领取腾讯云代金券