大白话揭秘搞好就能“年薪百万”的SpringCloud微服务

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 微服务基本概念架构的演变为什么会有微服务?假如回到10年前,一天张三入职了电商企业—并夕夕商城。公司初创,人比较少,公司网站的用户也很少,公司只有一个工程师项目架构比较简单

微服务基本概念

架构的演变

为什么会有微服务?

假如回到10年前,一天张三入职了电商企业—并夕夕商城。

公司初创,人比较少,公司网站的用户也很少,公司只有一个工程师

项目架构比较简单

1.单体架构

网络异常,图片无法展示
|

没有想到的是,公司业务越来越好,网站用户量越来越大,单体架构的问题就暴露出来了,随着访问量增加,项目经常宕机

问题:架构简单 难以抗住高并发

于是,招人。对并夕夕商城进行升级优化。

分析升级的方向:

数据库 和 应用代码要放在不同的服务器上

增加应用负载能力【集群】

于是增加负载均衡。

2.负载均衡

分布式:一个系统 通过多台服务器 协同完成系统功能

集群:同一个系统放在了多台服务器上 且每个服务器上内容相同 复制了多份

网络异常,图片无法展示
|

负载均衡的问题

成本

Session

增加负载均衡之后,应用服务器不再是系统的瓶颈了,可以灵活的随着访问量增大的同时增加应用服务器集群的数量。

随着业务量不断增加,数据量也在不断增加,数据库出现性能瓶颈。

招人

在多位同事努力之下,对项目进行进一步的优化—读写分离。

3.读写分离

网络异常,图片无法展示
|

上述的架构看上去非常的完美,但是,随着并夕夕商城业务量的不断增加,新的问题暴露了出来。

问题:

  1. 商品搜索使用数据库模糊查询不行,不精确,慢 【全文检索】图书查询 模糊匹配
  2. 不同模块的数据访问的频率是不一样的(热度不同),首页数据访问量比较大,订单数据的访问量相比之下要小很多。所有的数据都去数据库取,影响首页访问速度 【缓存】

招人

4.全文检索缓存

所有的同事开始一起优化项目,商品搜索使用全文检索技术ES完成,并且引入缓存(Redis集群),于是架构变成了这个样子。

网络异常,图片无法展示
|

随着并夕夕商城不断壮大,公司迎来了风投,风投两个亿,于是商城发展的更快了,新的问题出现了。

问题:

不同业务模块之间的耦合太高,一个模块出问题整个服务器宕机

维护困难,假如应用服务器集群200台,那么项目上线意味着需要部署200台服务器

比如:修改了订单的代码 订单模块要重新部署 意味着所有的服务器都需要重新部署一遍

冗余,有些模块没有必要部署在所有的服务器上

招人:100个人的团队,对项目进行新的优化和升级—服务化(SOA),根据业务模块的不同,拆分为不同的应用

以上就是分布式的架构

5.服务化

于是公司进入轰轰烈烈的服务化时代,但是有几个问题需要被解决,如下

网络异常,图片无法展示
|

每一个模块都是一个独立的项目 都可以独立启动 这样的做法 就叫做服务化 模块变成项目之后我们称之为服务 首页模块---》首页服务

这就是服务化 这就是微服务,微服务是:特殊的分布式架构【服务化】

首页的访问量比较大 就可以部署五个

订单的访问量小 就可以只部署一个

网络异常,图片无法展示
|

问题:

  1. 服务之间怎么调用?例如:订单服务需要调用商品服务的数据,怎么调用?
  2. 怎么负载均衡?服务之间负载均衡?app访问后台怎么负载均衡?
  3. 服务怎么被管理?例如:商品服务宕机了,怎么及时的通知订单服务?如果没有通知订单服务,订单服务发的请求都会阻塞,造成订单宕机,引发链式故障,整个项目崩溃
  4. 服务之间的异常处理?......

以上每一个问题都需要一个新的技术解决,而引入的新技术就是微服务技术,SpringCloud(一套技术)

如何解决这几个问题 又需要用到一些新的技术,这些技术就是所谓的微服务的技术(SpringCloud)

基于上面的问题,整个并夕夕商城团队疯狂的努力,找到了一些技术(SpringCloud),分别解决了上述问题,架构图如下:

网络异常,图片无法展示
|

到此为止,并夕夕商城成为了一个微服务的架构。

服务化 微服务主要的内容就是按照业务模块拆分不同的应用服务,并且解决拆分之后遇到的问题

什么是微服务

the microservice architectural style [1] is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.【官方文档】

  • 每个服务可独立运行在自己的进程里 每个服务独立部署启动
  • 一系列独立运行的微服务共同构建起整个系统
  • 每个服务为独立的业务开发,一个微服务只关注某个特定的功能,例如订单管理,用户管理【按照服务拆分】
  • 微服务之间通过一些轻量的通信机制进行通信,例如Restful API(HTTP)进行调用【订单服务如何调用商品服务】
  • 可以使用不同的编程语言与数据存储技术开发

官网链接https://www.martinfowler.com/articles/microservices.html

什么是SpringCloud

SpringCloud=分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶。Spring Cloud是一个涵盖多个子项目的开发工具集,集合了众多的开源框架,他利用了Spring Boot开发的便利性实现了很多功能,如服务注册,服务发现,负载均衡等。

服务管理 需要一个技术

服务调用 需要一个技术

负载均衡 需要一个技术

.......

这些技术怎么来?

自己找,技术之间的整合没有一定的技术实力搞不定

SpringCloud,SpringCloud官方找了一套解决微服务问题的技术,做了封装和整合,让用户可以直接使用,不需要关心技术整合的问题

开发微服务相当于买一台电脑

自己组装,自己找微服务的技术相当于自己组装电脑

买品牌机,使用SpringCloud相当于直接买了一个联想的电脑,CPU 显卡等等都帮你处理好了

SpringBoot 和 SpringCloud有什么关系

使用负载均衡需要很多的配置,写配置

自己写配置

SpringBoot自动配置

SpringCloud 使用了 SpringBoot 作为底层,通过SpringBoot的自动配置简化分布式的开发

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
6月前
|
监控 测试技术 数据库
【面试宝藏】微服务架构详解
微服务架构将大型应用拆分成小型、独立的服务,每个服务专注特定业务功能,实现独立部署和扩展。优势包括故障隔离、技术多样性、开发灵活性。挑战包括服务发现、数据一致性及运维复杂性。RESTful用于构建Web API,微服务测试涵盖单元、集成、契约、端到端和性能测试。DDD帮助处理复杂业务逻辑,通过统一语言增强沟通。
61 2
|
存储 缓存 负载均衡
大白话揭秘搞好就能“年薪百万”的SpringCloud微服务
微服务基本概念 架构的演变 为什么会有微服务? 假如回到10年前,一天张三入职了电商企业—并夕夕商城。 公司初创,人比较少,公司网站的用户也很少,公司只有一个工程师 项目架构比较简单
|
7月前
|
前端开发 JavaScript Java
一款神仙级SpringCloud微服务开源项目,接私活吊到不行!(附源码)
一个由商业级项目升级优化而来的微服务架构,采用SpringBoot 2.7 、SpringCloud 等核心技术构建,提供基于React和Vue的两个前端框架用于快速搭建企业级的SaaS多租户微服务平台。
一款神仙级SpringCloud微服务开源项目,接私活吊到不行!(附源码)
|
7月前
|
监控 安全 Java
太牛了,这是我见过把微服务讲的最全最好的SpringCloud架构进阶
现如今微服务架构十分流行,而采用微服务构建系统也会带来更清晰的业务划分和可扩展性。同时,支持微服务的技术栈也是多种多样的,而Spring Cloud就是这些技术中的翘楚。
|
Java 程序员 持续交付
限量!腾讯高工用4部分讲清楚了Spring全家桶+微服务
微服务 作为一名Java程序员如果你对微服务不了解,就会在学习或者使用的过程中觉得有点“晕”。微服务是一种面向服务的软件架构模式! 我们常说,架构设计的核心是满足降本增效。该怎么理解? 举个例子,微服务架构之所以能脱颖而出,正是因为它实现了 系统解耦和持续集成,有清晰的服务边界 ,很大程度上避免了“牵一发而动全身”的尴尬。 它相对传统架构而言更“灵动 ” , 更能满足如今快速变化的业务需求,在降低迭代成本的同时,也会帮助团队更聚焦的提升效率。 同时,SpringBoot及SpringCloud都是包含在微服务中的,你对其都有多少了解呢?在工作中会运用的又有多少呢?
|
监控 Java 微服务
知乎三天点击破亿!四天精通springcloud微服务架构
第一天主要是了解springcloud微服务架构的基础知识,打好基础(如果大家这方面的基础比较好的话可以直接跳过),然后我们就会去学习服务注册:Eureka基础、进阶和源码以及会去学习Eureka替换方案Consul,紧接着我们会去学习服务调用:Ribbon的基础、进阶和源码。这四天所有的技术点我们都会深入到源码层面去讲解
|
运维 监控 负载均衡
关于微服务的一些总结和经验之谈,来看看你都了解吗
关于微服务的一些总结和经验之谈,来看看你都了解吗
777 0
|
运维 监控 Oracle
不要迷信微服务,但也不要放弃对微服务,中台的迷恋与追逐
从公司使用微服务的角度,分析微服务的优缺点
135 0
|
存储 JSON 运维
2017年终奉献:微服务最佳实践
2017年终奉献:微服务最佳实践
|
运维 Rust Cloud Native
微服务是老生常谈,还是愈发青春? | 解读微服务的2022
微服务是老生常谈,还是愈发青春? | 解读微服务的2022
128 0