程序员不得不了解的微服务的现状和未来,建议收藏哦!!!

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 单体架构应该是我们最先接触到的架构实现了,在单体架构中使用经典的三层模型,即表现层,业务逻辑层和数据访问层。


image.png

一、微服务的现状及未来

1.服务架构的演变

1.1 单体架构

  单体架构应该是我们最先接触到的架构实现了,在单体架构中使用经典的三层模型,即表现层,业务逻辑层和数据访问层。

image.png

  单体架构只适合在应用初期,且访问量比较下的情况下使用,优点是性价比很高,开发速度快,成本低,但缺点也很明显,这时扩展的首先就是考虑服务器的集群处理。

1.2 集群

  针对单个服务器在访问量越来越大的情况越来越吃力的情况,我们可以考虑服务器的集群话处理。

image.png

  集群的部署大大提高了服务的处理能力,同时利用Nginx提供的负载均衡机制,来分发请求,使用户的体验没有改变。

1.3 垂直化

  上面的集群部署是可以解决一部分的服务器压力,但是随着用户访问量的增多,集群节点增加到一定阶段的时候,其实作用就已经不是太大了,因为将所有的业务都集中在一起,造成耦合度很高,这时我们可以考虑业务的拆分。来提高系统的性能。比如将原来在一个系统里面的业务拆分为用户系统,订单系统和商品系统。也就是我们讲的垂直化拆分如下:

image.png

  服务垂直化拆分后是可以大大的提高整体的服务处理能力,但是也会出现很多的冗余的代码,比如用户系统要操作订单库,要操作商品库,订单系统也有可能要操作用户库和商品库等。

image.png

1.4 服务化

  针对垂直化拆分出现的问题,这时就出现了我们经常听到的SOA(面向服务的架构).什么是SOA呢?在《微服务设计》中有这么一段描述

SOA是一种设计方法,其中包括多个服务,而服务之间通过配合最终会提供一系列功能,一个服务通常以独立的形式存在于操作系统进程中,服务之间通过网络调用,而非采用进程内调用的方式进行通信。

image.png

业务重用,共享服务,

1.5 微服务化

  在SOA的基础上继续演进就是我们讲的微服务。SOA的服务更细粒度的拆分后就是微服务。根据时间递进。

image.png

  对基础运维的要求能力会越来越高,虚拟化,容器话等。

微服务和SOA的区别:

1.思想上:微服务的目的是解耦而SOA的目的是实现数据的互通和共享性。

2.协议:微服务会使用一些轻量级的通信协议(Restful API)

3.基础设施要求,微服务更加强调开发运维的持续交付。

2. 微服务架构的需求

2.1 RPC框架

  在微服务架构中,服务与服务之间要实现接口的调用我们肯定要通过相关的RPC(Remote Procedure Call)框架来实现。

image.png

  常用的RPC框架有:Dubbo,Google的GRPC,Apache的Thrift,微博的Motan,京东的EasyRPC等。我们通过RPC框架可以取调用服务提供者提供的服务,但有一个前提是我们要能找到这个服务。通常我们的服务部署都是集群多节点的部署,所以在消费者这端就不可能直接写死在代码里面,这时就涉及到了服务的发现问题,这时就需要另一个组件注册中心了

2.2 注册中心

  注册中心实现服务地址管理的功能,解决服务动态感知(上线,下线)。

image.png

2.3 负载均衡

  在服务注册中心的介绍中我们可以看到负载均衡的应用。我们可以通过Ribbon来实现客户端的负载均衡,负载均衡的策略可以是:轮询,随机,根据响应时间来计算权重的轮询等。

image.png

2.4 配置中心

  在微服务架构中我们有很多个服务,而每个服务中是都会有单独的配置文件的。里面有很多的配置信息的有关联的,而且对于后期的更新维护也会非常的不方便,这时配置中心就上场了。常用的配置中心有:apollo/Nacos/disconf/zookeeper/diamond/Spring  Cloud Config

image.png

2.5 网关

  网关可以帮助我们完成用户请求的入口,路由。完成统一授权,日志的记录,权限的认证和限流及熔断操作。

image.png

2.6 限流、降级、缓存

  在现实的微服务架构中的性能是很难满足所有的用户请求,这时我们就可以通过一些措施来保证我们的核心服务的正常运转。

限流:sentinel、hystrix

降级:主动降级(订单评论、广告关闭)、被动降级

缓存:降低数据源访问频率、Redis等

容错机制:服务出现挂机,宕机之后的处理机制。

image.png

2.7 Bus

  Bus消息总线,实现异步化的通信机制。

image.png

2.8 链路监控

  因为微服务中的服务实在是太多了,为了能更好的监控个服务的情况,肯定就需要链路监控服务,我们可以通过sleuth+zipkin来实现,应用层监控,系统级监控

image.png

3.SpringCloud 生态

  SpringCloud生态提供了快速构建微服务的技术组件。https://spring.io/projects/spring-cloud-netflix

image.png

3.1 版本号说明

  • SR (发行版)
  • RC (后续发行版本)
  • M1/M2(PRE) 里程碑
  • GA 稳定版
  • BUILD-XXX 开发版

3.2 SpringCloud和SpringBoot的关联关系

大版本对应:

Spring Cloud Spring Boot
Angel版本 兼容Spring Boot 1.2.x
Brixton版本 兼容Spring Boot 1.3.x,也兼容Spring Boot 1.4.x
Camden版本 兼容Spring Boot 1.4.x,也兼容Spring Boot 1.5.x
Dalston版本、Edgware版本 兼容Spring Boot 1.5.x,不兼容Spring Boot 2.0.x
Finchley版本 兼容Spring Boot 2.0.x,不兼容Spring Boot 1.5.x
Greenwich版本 兼容Spring Boot 2.1.x
Hoxtonl版本 兼容Spring Boot 2.2.x

在实际开发过程中,我们需要更详细的版本对应:

Spring Boot Spring Cloud
1.5.2.RELEASE Dalston.RC1
1.5.9.RELEASE Edgware.RELEASE
2.0.2.RELEASE Finchley.BUILD-SNAPSHOT
2.0.3.RELEASE Finchley.RELEASE
2.1.0.RELEASE-2.1.14.RELEASE Greenwich.SR5
2.2.0.M4 Hoxton.SR4

SpringCloud版本是和SpringBoot有关联关系的,官网中可以查看:https://docs.spring.io/spring-cloud/docs/current/reference/html/

image.png

  到这儿,我们也清楚了要学习好SpringCloud中相关组件的内容,SpringBoot是我们必须要掌握好的一个前置内容.下篇文章开始给大家详细介绍SpringBoot相关的内容,欢迎点赞收藏加关注哦!!!


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
JSON Java 程序员
马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day1最快 最全(2)
马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day1最快 最全(2)
32 3
|
2月前
|
SQL Java 程序员
马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day1最快 最全(1)
马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day1最快 最全(1)
160 1
|
3月前
|
Java 数据库连接 微服务
Java程序员必学知识:高并发+微服务+数据结构+Mybatis实战实践
BATJ最全架构技术合集:高并发+微服务+数据结构+SpringBoot 关于一线互联网大厂网站的一些特点:用户多,分布广泛、大流量,高并发、海量数据,服务高可用、安全环境恶劣,易受网络攻击、功能多,变更快,频繁发布、从小到大,渐进发展、以用户为中心。 如果你工作中够仔细,你会发现这些特点跟高并发、分布式、微服务、Nginx这些技术密切相关的,是因为只要你的公司在上升,用户量级都会与日俱增,高性能、高并发的问题自然避免不了,话不多说往下看。
|
机器学习/深度学习 负载均衡 网络协议
SpringCloud+Alibaba微服务教程,Java自学/进阶程序员必看
Spring Cloud是目前市面上最火爆的Java微服务技术栈,因其功能丰富涉及微服务管理全面,并且在高可靠、高可阔以及在应对复杂业务和承受并发的能力上发挥出色,使其受到众多互联网公司的青睐。 很多公司逐步转型到微服务架构风格,所以springcloud是成为进阶Java开发高级工程师的必备技术栈。 本套课程将带你深入学习SpringCloud相关技术,学成之后可以去手动去搭建一个项目,相当可以主导一个项目开发,让你在技术上有一个质的提升。
300 0
|
监控 Java 测试技术
还不知道如何实践微服务的Java程序员,这遍文章千万不要错过!
还不知道如何实践微服务的Java程序员,这遍文章千万不要错过!
|
Java 程序员 微服务
Java程序员金九银十跳槽面试,微服务架构是你必须过的坎
Java程序员金九银十跳槽面试,微服务架构是你必须过的坎
|
2天前
|
监控 负载均衡 API
从单体到微服务:架构转型之道
【8月更文挑战第17天】从单体架构到微服务架构的转型是一项复杂而系统的工程,需要综合考虑技术、团队、文化等多个方面的因素。通过合理的规划和实施策略,可以克服转型过程中的挑战,实现系统架构的升级和优化。微服务架构以其高度的模块化、可扩展性和灵活性,为业务的持续发展和创新提供了坚实的技术保障。
|
13天前
|
缓存 监控 API
【微服务战场上的神秘守门人】:揭秘API网关的超能力 —— 探索微服务架构中的终极守护者与它的神奇魔法!
【8月更文挑战第7天】随着微服务架构的流行,企业应用被拆分为围绕特定业务功能构建的小型服务。API网关作为微服务间的通信管理核心,对请求进行路由、认证、限流等处理,简化客户端集成并提升用户体验。以电商应用为例,通过Kong部署API网关,配置产品目录等服务的API及JWT认证插件,确保安全高效的数据交互。这种方式不仅增强了系统的可维护性和扩展性,还提供了额外的安全保障。
31 2