一文带你了解Java微服务的相关知识,值得收藏!

图片

目前,Springcloud微服务几乎已经是互联网公司的必备技能了,对于Java程序员求职来说,Java微服务也是非常关键的技术点,今天小编就来给大家介绍Java微服务当中的Springcloud,希望对大家学习Java微服务相关的知识能够提供一些帮助!

图片

· 微服务

提到微服务相信很多程序员都不太陌生,互联网技术经过这么多年的发展,很多技术领域为了满足日益增长的日舞,越来越多的新技术涌现出来,其中微服务就是非常重要的一个技术点。

从早期的单体架构、集群架构、分布式架构、到现在主流都是微服务架构,首先这里我们先通过几张图来看下互联网技术架构的演进。

   · 单体架构介绍

我们都知道互联网刚开始发展的时候,用户量是非常少的,能接触到网络的人都是极其有限的,所以这个时候的互联网的架构师是这样的,只有一个服务器,一个数据库。

图片

 · 集群架构介绍

紧接着,随着互联网的发展,用户量的增加(就是能玩的电脑的人多了),原来的这个单体的架构支撑不了这么大的用户访问量了,之前一个服务器,现在网站动不动就挂了,这个课怎么得了;大佬一咬牙,一跺脚,一个服务器不行,加多来几个服务器,就这么一不小心互联网的技术架构就变成了集群架构。

图片

 · 分布式架构介绍

本来一切都这么安静发生着,好像宇宙大和谐的样子,用户感觉网速嗖嗖的,大佬们也感觉我们的想法真牛逼,简直可以改变世界。可是没想到,突然互联网迎来了前所未有的大发展,因为多年前有以为老人在中国的南海边画了一个圈。

这个时候各位技术大佬可是坐不住了,网站总是卡死可怎么办,以为增加的服务器根本解决不了问题,之前所有的业务都在同一个服务器中,非常复杂。这个时候就开始把之前耦合在一起的业务给拆分来了,比如:订单模块、用户模块等;这样互联网的技术架构也就演变。

图片

 · 微服务架构的出现

本来分布式架构基本满足了现在互联网的发展,一切都这么安静的发生着,但是大厂的可是永远不那么安分,依然进行着创新,想要进一步提高效率,所以之前仅从业务单元进行拆分,还是满足不了大厂的需求,所以就对业务进行了更加细粒度的拆分,而且每一个服务都可以独立部署,这就就是我们现在所说的微服务。

图片

 · SpringCloud介绍

好了,到这里互联网的技术架构演变大家基本比较清楚了,最终实现微服务的技术就是我们接下来要介绍SpringCloud。

SpringCloud是微服务架构的集大成者,将一系列优秀的组件进行了整合(大杂烩)已经在国内众多大中小型的公司有实际应用案例。目前许多公司的业务线全部拥抱SpringCloud,部分公司选择部分拥抱SpringCloud.

springcloud的优缺点

优点:

1、耦合小,不会影响其他模块的开发

2、降低团队开发的成本,可以做到并行开发,不用关心其他人怎么开发

3、配置比较简单,基本上使用注解就能实现,不必使用过多的配置文件

4、微服务是跨平台的,可以使用任何一种编程语言

5、每个微服务可以使用独立的数据库,也可以公用同一个数据库

6、直接写后端代码,不用关注前端怎么开发,然后暴露接口,通过组件进行服务间通信

缺点:

1、部署比较麻烦,给运维工程师带来一定的麻烦。

2、数据管理比较麻烦,因为每个微服务可以使用自己独立的数据库

3、系统集成测试比较麻烦

4、性能监控比较麻烦

SpringCloud的应用场景

1、适用于复杂业务场景:特别是对于大型企业来说,微服务架构能够将复杂的业务拆分成不同的服务,提高了系统的灵活性和可维护性。例如银行、保险、电信等行业,其业务重复性较高,但需要区分用户、订单、账户、支付等多个服务,采用微服务架构能够方便地将不同的服务进行分离,提高系统的可扩展性和可维护性。

2、适用于大流量、高并发的业务场景:通常来说,大流量和高并发是系统的技术挑战,在传统的单体架构下,数据量大、请求频繁时,很容易造成系统崩溃。而通过微服务架构,可以将不同的服务分别部署在不同的服务器上,降低了每个服务的压力,提高了系统的稳定性和可靠性。例如电商、在线旅游等行业,其用户访问量高,需要实时响应用户请求,采用微服务架构能够支持高并发的业务场景。

3、适用于多平台、多终端的业务场景:现代化的企业通常需要将服务面向多种不同的终端,例如Web端、移动端、桌面端等。采用微服务架构可以将不同的服务适配到不同的终端,同时能够支持各种不同的跨平台集成,例如使用Restful API提供数据支持。例如智能家居、电子商务等行业,需要支持各种多终端的应用,采用微服务架构能够方便地面向不同终端提供服务。

总结:基于Spring Cloud的微服务架构适用于复杂业务场景、大流量、高并发的业务场景和多平台、多终端的业务场景。对于不同的企业来说,具体的应用场景可能会有所不同,但是采用微服务架构能够为企业信息技术的发展提供更多的选择和方案。

springcloud的组件介绍

之所以说它是大杂烩,我们可以通过下面这张图来感受一下,因为它几乎就包揽了所有微服务架构所需的技术组件。

图片

SpringCloud中组件很多,并且还在扩充中,所以我们就介绍几个主要的组件:

  • Eureka:服务治理组件,包含服务注册与发现

  • Feign:声明式服务调用组件

  • Ribbon:客户端负载均衡的服务调用组件

  • Hystrix:容错管理组件,实现了熔断器

  • Zuul:网关组件,提供智能路由、访问过滤等功能

  • Config:分布式配置中心组件,用来统一配置文件

通过这么多核心的组件就可以轻松的搭建起一个个微服务系统架构,由于都是一个生态内的技术,所以很多技术都很兼容,极大的降低了开发的门开,所以现在基本是互联网公司的,都上微服务架构了,接下来我们就挨个来看下这几个组件吧。

 · Eureka服务治理组件

Eureka是Netflix开发的服务治理框架,是一个基于REST的服务,主要用于服务间的注册发现、负载均衡等。

图片

 · Feign声明式服务调用组件

Feign是一个声明式的web服务客户端,一种负载均衡的HTTP客户端,使用Feign调用API就像调用本地方法一样,从避免了调用目标微服务时,需要不断的解析/封装json数据的繁琐,通常是和Ribbon一起实现。

图片

 · Ribbon负载均衡组件

Ribbon 是一个基于HTTP 和 TCP的 客服端负载均衡工具,包括Feign 提供的声明式服务调用也是基于该Ribbon 实现的。Ribbon默认提供很多种负载均衡算法,例如轮询、随机等等。我们也可以根据自己的需要自定义的负载均衡策略。

图片

 · Hystrix熔断限流组件

Hystrix这个组件就有点复杂了,因为它可能没有具体的实现某项功能,他主要的作用提高系统的高可用性和稳定性,在分布式系统环境下,服务间各种依赖,一个业务调用通常依赖多个基础服务是非常常见的。而Hystrix就起到了监控服务,以及服务容错的作用,如果处理问题不及时,就很可能出现雪崩,后果不堪设想。

图片

 · Zuul服务网关组件

Zuul是微服务API网关,也是用户访问的第一道关,所有用户的请求都会经过Zuul才能到达后端应用程序。Zuul提供了动态路由、监控、弹性负载和安全功能。Zuul底层利用各种filter实现如下功能:

  • 认证和安全,识别每个需要认证的资源,拒绝不符合要求的请求。

  • 性能监测,在服务边界追踪并统计数据,提供精确的生产视图。

  • 动态路由,根据需要将请求动态路由到后端集群。

  • 压力测试,逐渐增加对集群的流量以了解其性能。

  • 负载卸载,预先为每种类型的请求分配容量,当请求超过容量时自动丢弃。

  • 静态资源处理,直接在边界返回某些响应。

所以在网关这一层,除了核心的路由功能外,也是限流的一种手段。

图片

 · Config分布式配置中心组件

Config是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。工作中也经常和携程开源的Apllo一起使用。

图片

好了,到这里就基本给大家介绍了SpringCloud的几个核心组件,如果我们把这些核心组件搞定后,就基本把微服务的核心知识搞定啦!

猜你喜欢

转载自blog.csdn.net/xishining/article/details/131778912