
微服务
文章平均质量分 75
陈家宝
其实我觉得吧,压力也没那么大[doge]
展开
-
Dubbo的使用
Dubbo是阿里巴巴开源的基于Java的高性能RPC分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。Spring-cloud-alibaba-dubbo 是基于SpringCloudAlibaba技术栈对dubbo技术的一种封装,目的在于实现基于RPC的服务调用。本文示例通过Spring-cloud-alibaba-dubbo完成服务调用。目录一、抽取接口:提供统一业务api二、服务提供者实现接口2.1 添加dubbo依赖2.2 添加原创 2020-09-30 16:22:40 · 401 阅读 · 0 评论 -
Seata分布式事务解决方案
目录一、Seata介绍二、使用Seata实现分布式事务控制2.1 订单微服务实现下单接口2.2 商品微服务实现扣减库存接口2.3 暴露出分布式事务问题2.3.1 正常测试2.3.2 异常测试2.4 Seata解决分布式事务问题2.4.1 下载Seata2.4.2 修改配置文件2.4.3 初始化seata在nacos的配置2.4.3 启动seata服务2.4.4 添加undo_log表2.4.5 微服务集成seata事务控制一、Seata介绍Se原创 2020-09-29 20:03:05 · 2472 阅读 · 1 评论 -
Nacos Config 服务配置中心
首先暴露问题,然后提出解决方案。先来看下微服务架构中,关于配置文件的一些问题:配置文件相对分散。在一个微服务架构下,配置文件会随着微服务的增多变的越来越多,而且分散在各个微服务中,不好统一配置和管理。 配置文件无法区分环境。微服务项目可能会有多个环境。例如:测试环境、预发布环境、生产环境。每一个环境所使用的配置一般情况下是不同的。打个比方,出个包更新到预发布环境,还得把配置改好了才能进行,很痛苦。 配置文件无法实时更新。我们修改了配置文件之后,必须重新启动微服务才能使配置生效,这对一个正在运行的项目原创 2020-09-27 00:15:53 · 4279 阅读 · 2 评论 -
SMS短信服务
接下来,通过“短信验证码”功能来演示阿里云短信服务的集成和使用。大体流程如下:关于阿里云的注册与实名认证,不再赘述。目录一、开通短信服务二、申请认证密钥三、申请短信签名四、申请短信模板五、短信服务API介绍六、功能测试一、开通短信服务二、申请认证密钥AccessKey就是阿里云颁发给你的一套用户名密码,发送短信要收费吧,所以发送短信时要求带上认证密钥,方便扣钱。三、申请短信签名四、申请短信模板五、短信服务API介绍此处不原创 2020-09-26 19:52:05 · 1759 阅读 · 0 评论 -
RocketMQ的消息类型
RocketMQ的消息类型有以下三种:普通消息 顺序消息 事务消息下边分别介绍三种类型消息的使用场景,以及使用示例。一、普通消息对于普通消息,RocketMQ提供了三种发送方式:可靠同步发送、可靠异步发送和单向发送。可靠同步发送同步发送是指消息发送方发出数据后,会在收到接收方发回响应之后才会发送下一个数据包的通讯方式。此种方式应用场景非常广泛,例如重要通知邮件、报名短信通知、营销短信系统等。可靠异步发送异步发送是指发送方发出数据后,不等接收方发回响应,接着发送下一原创 2020-09-23 21:53:55 · 4787 阅读 · 1 评论 -
SpringBoot中使用RocketMQ
接下来我们模拟一种场景:商品下单成功之后,向下单用户发送短信。以此来示例SpringBoot中RocketMQ的使用方式。目录1 订单微服务发送消息1.1 订单微服务添加rocketmq的依赖1.2 添加配置1.3 编写测试代码1.4 测试2 用户微服务订阅消息2.1 用户微服务增加rocketmq依赖2.2 修改主类,启动nacos客户端2.3 修改配置文件2.4 编写消息接收服务2.5 测试1 订单微服务发送消息1.1 订单微服务添加ro.原创 2020-09-16 21:54:49 · 4378 阅读 · 0 评论 -
JAVA代码实现RocketMQ消息发送和接收
首先,引入rocketmq的依赖: <!--rocketmq--> <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.1.1</v原创 2020-09-16 18:47:05 · 6955 阅读 · 1 评论 -
RocketMQ控制台安装
1 下载下载地址:https://github.com/apache/rocketmq-externals/releases2 修改配置文件修改配置文件rocketmq-console\src\main\resources\application.properties注意:此文件不能有中文server.port=6666 # 项目启动后的端口号rocketmq.config.namesrvAddr=192.168.232.168:9876 # name server的地址,注意防火.原创 2020-09-15 23:50:33 · 663 阅读 · 0 评论 -
RocketMQ入门
接下来记录在linux平台下安装一个RocketMQ的服务。目录1 下载RocketMQ2 安装RocketMQ3 启动RocketMQ3.1 切换到RocketMQ的bin目录3.2 启动NameServer3.3 启动Broker4 测试RocketMQ5 关闭RocketMQ1 下载RocketMQ下载地址:http://rocketmq.apache.org/release_notes/release-notes-4.7.1/环境要求Linux64原创 2020-09-15 22:44:32 · 509 阅读 · 0 评论 -
Zipkin数据持久化
Zipkin Server默认会将链路追踪数据保存到内存中,但这种方式不适合生产环境。一旦Zipkin Server重启,数据就丢失了。Zipkin支持将追踪数据持久化到mysql或者elasticsearch中。1 使用mysql实现数据持久化第一步:创建mysql数据库zipkin,执行如下sql语句。CREATE TABLE IF NOT EXISTS zipkin_spans ( `trace_id_high` BIGINT NOT NULL DEFAULT 0 COMMENT '原创 2020-09-15 18:32:16 · 2063 阅读 · 0 评论 -
Sleuth集成Zipkin
SpringCloud Sleuth主要功能就是在分布式系统中提供链路追踪解决方案。但是Sleuth并没有UI界面。需要集成Zipkin完成数据的收集、存储、查找和展示。目录1 集成Sleuth2 集成Zipkin2.1 下载Zipkin的jar包(服务端)2.2 命令行启动Zipkin Server2.3 通过浏览器访问http://localhost:94112.4 Zipkin客户端集成1 集成SleuthSleuth的集成很简单。只需要引入Sleuth依赖即可。由原创 2020-09-15 17:22:27 · 769 阅读 · 0 评论 -
Gateway网关限流
网关是所有请求的公共入口,所以可以在网关进行限流,而且限流的方式也很多,我们本次采用Sentinel组件来实现网关的限流。Sentinel支持对SpringCloud Gateway、Zuul等主流网关进行限流。从Sentinel1.6.0版本开始,Sentinel提供了SpringCloud Gateway的适配模块,可以提供两种资源维度的限流:route维度:即在Spring配置文件中配置的路由条目,资源名为对应的routeId 自定义API维度:用户可以利用Sentinel提供的API来自定原创 2020-09-15 12:22:35 · 2703 阅读 · 0 评论 -
Gateway之过滤器
过滤器的作用:过滤器就是在请求的过程中,对请求和响应做一些手脚生命周期:Pre Post分类:局部过滤器(作用在某一个路由上) 全局过滤器(作用在全部路由上)在Gateway中,Filter的生命周期只有两个:“pre”和“post”。 PRE:这种过滤器在请求被路由之前调用。我们可利用这种过滤器实现身份验证、在集群中选择请求的微服务、记录调试信息等。 POST:这种过滤器在路由到微服务以后执行。这种过滤器可用来为响应添加标准的HTTP Header、收集统计信息和指标、将响应.原创 2020-09-14 18:34:39 · 2862 阅读 · 0 评论 -
Gateway之自定义路由断言工厂
我们来设定一个场景:假设我们的应用仅仅让age在(min, max)之间的人来访问。第一步:在配置文件中,添加一个Age的断言配置server: port: 7000spring: application: name: api-gateway cloud: nacos: discovery: server-addr: localhost:8848 # nacos服务端地址 gateway: discovery:原创 2020-09-13 02:00:01 · 2495 阅读 · 5 评论 -
Gateway内置的路由断言工厂
SpringCloud Gateway包括许多内置的断言工厂,所有这些断言都与HTTP请求的不同属性匹配。具体如下:示例内置断言工厂的使用:原创 2020-09-12 23:52:11 · 391 阅读 · 1 评论 -
Gateway从nacos中获取服务信息
1 加入nacos客户端依赖 <!--nacos客户端--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>原创 2020-09-12 23:05:04 · 7252 阅读 · 1 评论 -
Spring Cloud Gateway快速入门
为什么需要网关?来看一个示意图:订单微服务中对商品微服务进行调用,没有问题。但是对于客户端,对微服务进行调用,就会暴露出当前架构下的问题:客户端需要维护服务端的各个地址,代码编写以及维护困难 认证 鉴权复杂 跨域问题API网关就是用来解决这些问题的。所谓的API网关,就是指系统的统一入口,它封装了应用程序的内部结构,为客户端提供统一服务,一些与业务本身功能无关的公共逻辑可以在这里实现,比如认证、鉴权、监控、路由转发等。1 创建一个api-gateway的模块,导入相关依赖.原创 2020-09-12 22:24:12 · 282 阅读 · 0 评论 -
Feign整合Sentinel实现容错
Sentinel通过各种规则对资源进行保护,即进行服务容错。Feign使得调用远程服务就像调用本地服务一样简单。但是Feign在调用远程服务的时候,由于远程服务的原因,可能会产生异常。就需要进行相应的容错设计。下面介绍Feign整合Sentinel实现服务容错:1 引入sentinel的依赖 <!--Sentinel--> <dependency> <groupId>com.alibaba.cloud&l原创 2020-09-12 00:58:20 · 4917 阅读 · 0 评论 -
Sentinel规则持久化
我们可以通过Dashboard控制台页面来为每个Sentinel客户端设置各种各样的规则,但是这里有一个问题,就是这些规则默认是存放在内存中,极不稳定(比如重启微服务后,规则丢失),所以需要将其持久化。本地文件数据源会定时轮询文件的变更,读取规则。这样我们既可以在应用本地直接修改文件来更新规则,也可以通过Sentinel控制台推送规则。以本地文件数据源为例,推送过程如下图所示:首先Sentinel控制台通过API将规则推送至客户端并更新到内存中,接着注册的写数据源会将新的规则保存到本地的文件中。原创 2020-09-11 23:35:50 · 1488 阅读 · 4 评论 -
Sentinel之@SentinelResource注解的使用
目录1 定义Sentinel资源点,以及异常处理方法2 调用定义的方法(资源点)3 编写Sentinel异常处理方法4 编写业务异常处理方法5 运行测试6 总结在定义了资源点之后,我们可以通过Dashboard控制台页面来设置限流和降级策略来对资源点进行保护。同时还能通过@SentinelResource注解来指定出现异常时的处理策略。@SentinelResource用于定义资源,并提供可选的异常处理和fallback配置项。其主要参数如下:下面示例@Sentine原创 2020-09-11 21:41:12 · 4381 阅读 · 0 评论 -
Sentinel之自定义规则异常返回
Sentinel的五种类型规则,在触发规则保护时,返回的异常页面是一样的。不好区分是因为哪种规则导致的异常。所以需要自定义异常返回信息,明确是触发了哪种类型的规则。第一步:编写自定义异常处理逻辑package cn.jack.config;import com.alibaba.csp.sentinel.adapter.servlet.callback.UrlBlockHandler;import com.alibaba.csp.sentinel.slots.block.BlockExcept原创 2020-09-11 20:07:02 · 5450 阅读 · 0 评论 -
Sentinel授权规则
很多时候,我们需要根据调用方来判断该次请求是否放行,这时候可以使用Sentinel的来源访问控制功能。若配置白名单,则只有请求来源位于白名单内时才可通过; 若配置黑名单,则请求来源位于黑名单时不允许通过,其余的请求来源可以通过。流控应用流控应用填写的是调用方标识,Sentinel提供了RequestOriginParser接口来处理标识信息。只要Sentinel保护的接口资源被访问,Sentinel就会调用RequestOriginParser的实现类去解析调用者标识。第一步:自原创 2020-09-09 23:19:03 · 2272 阅读 · 1 评论 -
Sentinel热点规则
目录1、编写测试接口代码2、配置热点规则3、分别用两个参数访问,会发现只对第一个参数限流了4、补充热点参数流控规则是一种更细粒度的流控规则,它允许将规则具体到参数上。示例热点规则的使用:1、编写测试接口代码package cn.jack.controller;import cn.jack.service.impl.OrderServiceImpl3;import com.alibaba.csp.sentinel.annotation.SentinelResource;原创 2020-09-09 22:24:19 · 1948 阅读 · 0 评论 -
sentinel降级规则
降级规则就是设置当满足什么条件的时候,对服务进行降级。Sentinel提供了三个衡量条件:慢调用比例:当资源的响应时间超过最大RT(以ms为单位,最大RT即最大响应时间)之后,资源进入准降级状态。如果接下来1s内持续进入5个请求(最小请求数),它们的RT都持续超过这个阈值,那么在接下来的熔断时长之内,就会对这个方法进行服务降级。其中的“比例阈值”我设置发现无效,下次编辑会重置成1注意Sentinel默认统计的RT上限是4900ms,超出此阈值的都会算作4900ms,若需要变更此上限可以通过启动配原创 2020-09-09 16:38:33 · 4935 阅读 · 10 评论 -
sentinel流控模式
目录1 直接流控模式2 关联流控模式2.1 配置限流规则2.2 jmeter压/order/message2接口3 链路流控模式3.1 编写一个service,在里面添加一个dosomething方法3.2 在Controller中声明两个方法,分别调用service中的dosomething方法3.3 禁止收敛URL的入口context3.3.1 将SpringCloud Alibaba的版本调整2.1.1RELEASE3.3.2 配置文件中关闭sentinel官方原创 2020-09-08 23:48:07 · 8871 阅读 · 4 评论 -
服务容错--sentinel入门
目录1、服务雪崩效应2、常见容错方案3、常见的容错组件4、Sentinel入门4.1、什么是Sentinel4.2、微服务集成Sentinel4.3、安装Sentinel控制台4.3.1、下载jar包4.3.2、启动控制台4.3.3、微服务接入Sentinel控制台4.3.4、实现一个接口的限流1、服务雪崩效应在分布式系统中,由于网络原因或者自身的原因,服务一般无法保证100%可用。如果一个服务出现了问题,调用这个服务就会出现线程阻塞的情况。此时若有.原创 2020-09-08 17:04:34 · 742 阅读 · 0 评论 -
基于JMeter模拟高并发
目录1、高并发带来的问题2、模拟高并发的场景2.1、编写两个接口2.2、修改tomcat线程数2.3、使用JMeter对接口进行压力测试2.3.1、下载JMeter2.3.2、修改配置,并启动软件2.3.3、添加线程组2.3.4、添加Http取样2.3.5、启动压测,浏览器访问message接口观察效果2.4、结论1、高并发带来的问题在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用,但是由于网络原因或者自身的原因,服务并不能保.原创 2020-09-08 12:04:44 · 4750 阅读 · 0 评论 -
基于Feign实现服务调用
目录1、什么是Feign2、Feign的使用2.1、加入Feign的依赖2.2、在主类上添加Feign的注解2.3、创建一个service,并使用Feign实现微服务调用2.4、修改controller调用服务的代码,启动应用进行验证1、什么是FeignFeign是Spring Cloud提供的一个声明式的伪http客户端,它使得调用远程服务就像调用本地服务一样简单,只需要创建一个接口,并添加一个注解即可。Nacos很好的兼容了Feign,Feign默认集成了Rib.原创 2020-09-08 10:30:48 · 1311 阅读 · 0 评论 -
基于Ribbon实现负载均衡
负载均衡根据发生的位置,分为服务器端负载均衡、客户端负载均衡。服务器端负载均衡,指请求到达“服务器”时,才决定由哪一台服务器进行处理。可以使用nginx来做。客户端负载均衡,即在客户端发送请求之前,就决定要访问哪一台服务器。这里使用Ribbon示例客户端负载均衡。目录1、在RestTemplate的生成方法上添加@LoadBalance注解2、修改服务调用的方法3、负载均衡策略3.1、修改负载均衡策略1、在RestTemplate的生成方法上添加@LoadBalance注解原创 2020-09-07 23:39:55 · 714 阅读 · 0 评论 -
nacos入门
目标:模拟商品下单操作。订单微服务通过注册中心(nacos)获取商品微服务的地址信息,完成商品信息查询,生成订单。1、搭建nacos环境1.1、安装nacos下载地址:https://github.com/alibaba/nacos/releases我的机器是windows环境,下载的zip版本。1.2、启动nacos双击startup.cmd启动。或者通过命令行启动。# 进入nacas的bin目录cd nacos/bin# 命令启动startup.cmd -m st原创 2020-09-07 20:52:00 · 1320 阅读 · 0 评论