美文网首页程序员
这次是真拯救了我,微服务SpringCloud,大佬这次讲的很清

这次是真拯救了我,微服务SpringCloud,大佬这次讲的很清

作者: 程序员匡胤 | 来源:发表于2020-07-21 14:19 被阅读0次

微服务

微服务架构是单体应用的演进,由于互联网行业高速发展,应运而生的一种架构体系,它具有独立解耦、高可用、扩展性强、易部署等好处,搭配敏捷开发,使得产品的开发上线效率得到很大的提升。微服务在带来一系列好处的同时,也带来了架构的复杂性。应用微服务化之后,会遇到服务发现、服务配置管理、服务授权验证统一在哪里做等问题,下面是一张典型的微服务架构图。该文使用spring cloud来搭建一个简单的微服务架构。

spring cloud是什么?

Spring Cloud 就是用于构建微服务开发和治理的框架集合,它的主要模块有以下:

Eureka:服务注册中心,用于服务管理。
Ribbon:基于客户端的负载均衡组件。
Hystrix:容错框架,能够防止服务的雪崩效应。
Feign:Web 服务客户端,能够简化 HTTP 接口的调用。
Zuul:API 网关,提供路由转发、请求过滤等功能。
Config:分布式配置管理。(eg:apollo)
Sleuth:服务跟踪。
Stream:构建消息驱动的微服务应用程序的框架。
Bus:消息代理的集群消息总线。

Eureka注册中心

eureka 是 Spring Cloud 的注册中心,提供服务注册和服务发现的功能。

利用idea 快速创建一个eureka应用

1.利用 https://start.spring.io 创建spring cloud eureka应用

2.选择 Eureka Server

3.填写项目名,构建项目完成

4.在application.properties文件中添加配置

# 项目名称
spring.application.name=hello-eureka-new  
 # 端口号
server.port=8761  
eureka.client.service-url.defaultZone=http://127.0.0.1:8761/eureka/ 
#是否注册到eureka上
eureka.client.register-with-eureka=false  
#是否从eureka上获取同步信息,单节可以设置为false
eureka.client.fetch-registry=false  
#清理无效节点时间
eureka.server.eviction-interval-timer-in-ms=10000
#是否开启自我保护 ,Eureka 会统计15分钟之内心跳失败的比例低于85%将会触发保护机制,不剔除服务提供者,如果关闭服务注册中心将不可用的实例正确剔除
eureka.server.enable-self-preservation=false

5.启动类添加注解 @EnableEurekaServer


6.启动,至此eureka服务就跑起来了,图中已经注册两个服务在eureka上。可以通过另一篇文章springboot整合mybatis来创建两个springboot的web项目,这里我创建了hello-july-one(8081)和helle-july-two(8082)。


7.两个web项目创建好之后,在pom.xml中引入eureka的依赖

       <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

并且在application.properties中配置如下:

###服务注册中心的配置内容,指定服务注册中心的Url
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka/
eureka.instance.prefer-ip-address=true

启动类添加注解 @EnableEurekaClient

Feign调用

Feign 是一个声明式的 REST 客户端,它能让 REST 调用更加简单。Feign 供了 HTTP 请求的模板,通过编写简单的接口和插入注解,就可以定义好 HTTP 请求的参数、格式、地址等信息。而 Feign 则会完全代理 HTTP 请求,我们只需要像调用方法一样调用它就可以完成服务请求及相关处理。Spring Cloud 对 Feign 进行了封装,使其支持 SpringMVC 标准注解和 HttpMessageConverters。Feign 可以与 Eureka 和 Ribbon 组合使用以支持负载均衡。

在 Spring Cloud 中集成 Feign 的步骤相当简单,首先还是加入 Feign 的依赖,在启动类上加 @EnableFeignClients 注解,依赖信息如下:

       <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

定义一个Feign 的客户端,以接口形式存在,接口上加的 @FeignClient 注解。这个注解标识当前是一个 Feign 的客户端,value 属性是对应的服务名称,定义之后可以直接通过注入 UserRemoteClient 来调用,这对于开发人员来说就像调用本地方法一样。此处引入了feign的配置文件(configuration = FeignConfiguration.class),配置了远程调用打印的日志级别,方便我们看到RPC调用过程。



修改(hello-july-two)FoodControl实现,返回(hello-july-one)UserDto信息

postman调用结果如下:


总结

一个简单的微服务架构到这里就拥有了服务注册中心,并可以业务服务之间可以互相调用了,之后的文章会加入服务的配置中心(apollo)、服务的统一网关(Gateway)、服务的负载均衡、服务的容错处理(Hystrix)、集成中间件(Redis、mq、es)等。

最后

感谢你看到这里,看完有什么的不懂的可以在评论区问我,觉得文章对你有帮助的话记得给我点个赞,每天都会分享java相关技术文章或行业资讯,欢迎大家关注和转发文章!

相关文章

  • 这次是真拯救了我,微服务SpringCloud,大佬这次讲的很清

    微服务 微服务架构是单体应用的演进,由于互联网行业高速发展,应运而生的一种架构体系,它具有独立解耦、高可用、扩展性...

  • 这次是真慌了

    说实话,2020年疫情时我都没这么慌 现在不是又有新增的新冠确诊病例吗?我们这里已经因为有确诊或密切接触被封了几个...

  • 这次,我是真怂了。

    因为这几天经常吃拉面,所以还特意百度了一下“拉面吃多了会吃事儿么”,以求安慰一下自己。不过,吃腻味儿了,也是真上火...

  • 这次我很勇敢

    今天是认识罗志轩的第六十六天。昨天晚上我说我喜欢他,这是我为数不多的这么直接的表达。但是就在前天晚上我对他说“我们...

  • 这次又是韩大爷救了我

    最近写文写的太被动了,想出一个题目,写了几句,就写不下去了。 心浮气躁,对自己没要求,或者不满于现在的自己,写文章...

  • SpringCloud 报错Cannot execute req

    上节自己学习了SpringCloud中的服务治理包含注册中心,服务提供,这次记录一下常见的错误: Spring C...

  • 这次 是真到了婺源

    一府六县,婺源是其一,如今划分成两省三市。看一眼那马头墙,便知道这里的风物人情还是冠着徽字头,千年的血脉联系终难轻...

  • 这次很开心

    我有两个朋友。都是我同事。已婚有两小孩,一个一男一女,另一个两男孩。很幸福。看起来。然而,我,至今转了一圈又单...

  • 这次,我是真生儿子气了

    本来一次愉快的午餐,硬是被气得连饭都不想吃了。 事情是这样的。 昨天买了条鱼,儿子说今天要红烧着吃。 于是,十二点...

  • 这次是真拯救了我,MySQL索引优化,explain讲得非常清楚

    前言: 这篇文章主要讲 explain 如何使用,还有 explain 各种参数概念,之后会讲优化 一、Expla...

网友评论

    本文标题:这次是真拯救了我,微服务SpringCloud,大佬这次讲的很清

    本文链接:https://www.haomeiwen.com/subject/ekjikktx.html