使用springCould来搭建微服务项目我们需要了解哪些组件

微服务是什么?
微服务是一种架构思想,重点在于将服务颗粒化,分而治之。
各个服务之间通过restful API之类的轻量级通讯机制来进行交互。

微服务遵循的原则是什么?

1.高内聚,低耦合:根据业务建模,把每个功能拆分成各个稳定的服务,各个服务之间只有输入输出关系,没有依赖关系
2.最少知识原则:服务暴露的接口完全是服务于业务的,并且不需要调用方了解任何接口内部的实现逻辑
3.把外部调用服务所需要的入参,出参,消息体都定义到jar包中作为公共模型,供调用方引用

通过SpringCloud来搭建微服务项目我们需要使用它的哪些功能模块?

1.eureka服务注册中心:用于服务注册以及服务发现
2.config配置中心:结合rabbitMQ实现动态刷新服务配置
3.ribbon负债均衡器:用做服务调用时的负债均衡
4.zuul网关路由:用于管理API网管以及动态路由
5.hystrix熔断机制:通过服务监控,服务降级以及服务熔断用来处理高并发情况下可能出现的问题

eureka服务发现有哪几种方式呢?
eureka服务发现有两种方式。
第一种是服务端发现,需要接入zookeeper之类的代理,对于客户端来说,直接调用就好了,代理来控制究竟调用注册中心的哪台服务。
第二种是客户端发现,客户端可以从注册中心拿到所有可用服务的地址,然后自己实现一套逻辑去选择具体调用哪个服务。

Ribbon是如何做负债均衡的呢?

分为两步,第一步是选择Eureka Server,ribbon会优先选择在同一个Zone下面负载较少的Server
第二部是根据用户指定的策略(轮询,随机,根据时间加权等),然后从服务注册列表中选择一个服务。
在代码层次有两种实现方式:RestTemplate和Fegin

SpringCloud的配置中心是怎么实现的?

可以通过关联git来实现的。
在pom.xml里面引入配置中心相关依赖,然后在application.yml里面加入git仓库的地址和账号信息,然后就可以在git网站上更新服务相关配置了
也可以通过整合Spring Cloud Bus来实现,结合rabbitMQ

Zuul网关路由的功能是什么?
首先是动态路由,app和web网站通过zuul来访问不同的服务方,结合ribbon,还可以访问同一服务的不同实例。
其次是安全认证,一些token校验,非法访问都可以在zuul网关中校验拦截
还有限流以及静态相应处理,限流值得是限制每一个接口的一些相应频率,静态响应处理指的是一些静态资源的获取可以由zuul直接处理,不会穿透到微服务内部。
zuul的核心就是一系列的过滤器。

zuul和ribbon是什么关系?
zuul是用来处理请求在不同服务之间的分发,ribbon是用来做同一服务不同实例之间的负债均衡的。

Hystrix服务容错指的是什么?是怎么实现的?

Hystrix主要通过命令模式将所有对其他服务的调用放在一个命令对象(hystrixCommend)中,由单独的线程执行。
针对每一个服务,都有一个单独的线程池,如果线程池耗尽,则拒绝请求(不是排队,是直接拒绝)。
从而保证在高并发,下一层服务处理不过来的情况下,不让请求穿透给下一层服务,造成服务异常。
同时hystrix还会记录每次请求的状态,成功,失败,超时,还是线程拒绝。
如果调用某个服务错误百分比超过阈值,就认为这个服务异常,则熔断器开关自动打开,在一段时间内停止对该服务的所有请求,避免发送大量无效请求影响系统吞吐量,并且断路器有自我检测以及恢复的功能。
hystrix还可以进行服务监控

服务降级和服务熔断有什么区别?

服务降级指的是在服务器压力剧增的情况下,根据实际业务以及流量,关闭一些非核心业务的接口或者页面,以释放服务器资源来保证核心业务的正常运行。
服务熔断指的是因为某些原因,导致服务调用过程中某一个环节服务A过载了,为了防止大量无效请求穿透到这一服务A,所以将该服务A异常时要调用该服务的所有请求都拦截,直接返回一个结果,从而达到快速释放资源,等服务A恢复之后重新调用的目的。

搭建微服务项目一般需要以下步骤: 1. 创建父项目项目根目录下创建一个父项目,作为所有微服务项目的父项目。在父项目的pom.xml文件中,配置Spring Cloud和其他依赖的版本号,如下所示: ``` <dependencyManagement> <dependencies> <!-- Spring Cloud dependencies --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>2020.0.2</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ``` 2. 创建微服务项目 在父项目下创建多个微服务项目,每个子项目都是一个独立的服务模块,可以有自己的数据模型、业务逻辑、数据库等。每个子项目需要配置Spring Boot和Spring Cloud相关依赖,如下所示: ``` <dependencies> <!-- Spring Boot dependencies --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Spring Cloud dependencies --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> </dependencies> ``` 3. 配置微服务 每个微服务需要有自己的配置文件,例如application.yml或application.properties。在配置文件中,需要指定微服务的端口号、注册中心地址、数据源等信息。 ``` server: port: 8080 spring: application: name: user-service datasource: url: jdbc:mysql://localhost:3306/user_db username: root password: root eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ ``` 4. 注册微服务 微服务需要注册到注册中心,以便其他微服务可以发现它并调用它的接口。可以使用Eureka或Consul等开源组件作为注册中心。在微服务的配置文件中,需要指定注册中心的地址和端口号。 ``` eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ ``` 5. 调用微服务 微服务之间可以通过HTTP或RPC调用接口行通信。可以使用Feign或Ribbon等Spring Cloud组件来实现微服务之间的调用。 例如,在一个微服务中调用另一个微服务的接口,可以使用以下代码: ``` @FeignClient(name = "user-service") public interface UserServiceClient { @GetMapping("/users/{id}") User getUserById(@PathVariable("id") Long id); } ``` 以上就是使用Spring Cloud搭建微服务项目的基本步骤。当然,在实际项目中还需要考虑一些其他因素,例如安全性、性能、可伸缩性等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值