Spring Cloud

Spring Cloud 中使用 Zipkin 追踪服务

为君一笑 提交于 2020-04-12 21:24:24
Zipkin 简介 ZipKin 是一个开放源代码的分布式跟踪系统,用于收集服务的定时数据,以解决微服务架构中的延迟问题。包括数据的收集、存储、查找和展现。 每个服务向 Zipkin 报告计时数据, Zipkin 会根据调用关系通过 Zipkin UI 生成依赖关系图,显示了多少跟踪请求通过每个服务。该组件可以让我们通过一个 Web 前端轻松的收集和分析数据。例如用户每次请求服务的处理时间等,可方便的监测系统中存在的瓶颈。 服务追踪说明 微服务架构是通过业务来划分服务的,使用 REST 调用。对外暴露的一个接口,可能需要很多个服务协同才能完成这个接口功能。 如果链路上任何一个服务出现问题或者网络超时,都会形成导致接口调用失败。 随着业务的不断扩张,服务之间互相调用会越来越复杂。随着服务的越来越多,对调用链的分析会越来越复杂,如下图: Zipkin 服务端 引入依赖 在 pom.xml 主要添加 zipkin 、 zipkin-server 和 zipkin-autoconfigure-ui 依赖 <dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin</artifactId> </dependency> <dependency> <groupId>io.zipkin.java</groupId>

springboot springcloud 动态配置使用

一曲冷凌霜 提交于 2020-04-12 17:54:01
使用mars 动态配置中心步骤 1、克隆github 项目到本地 地址: https://github.com/fashionbrot/mars-config.git 2、找到 init.sql 穿件库 mars_test 然后导入数据库 ​ ​ ​ ​ 3、找到 项目中mars-console 控制台项目,配置application.properties中的数据库配置 ​ ​ 4、以上配置好,打war包 放置tomcat ,启动tomcat服务即可 登录 http://localhost:8080/ 账号和密码一致:mars ​ ​ 5、进入动态配置中心后 应用环境管理 -》应用列表 -》新增 创建应用 应用环境管理 -》环境列表 -》新增 创建环境 (生产环境创建一个就行)(测试环境可创建 BetaA、BetaB ...) ​ ​ ​ ​ 在 配置管理->配置列表 中配置 环境应用需要的配置内容 新增环境应用对于的配置 test 文件 ​ ​ 新增完配置,配置可操作权限 ​ ​ 配置好权限然后发布 ​ ​ 6、在自己项目中添加 xml 配置 ​ ​ <dependency> <groupId>com.github.fashionbrot</groupId> <artifactId>mars-spring-config</artifactId> <version>0.1.2<

双剑合璧的开源项目Kitty-Cloud

[亡魂溺海] 提交于 2020-04-12 15:58:11
项目地址 https://github.com/yinjihuan/kitty-cloud 背景 做这个项目主要是想将个人的一些经验通过开源的形式进行输出,不一定能帮到所有人,有感兴趣的朋友可以关注学习下。 项目主要分为三大块: Kitty 基础框架 基础框架基于Spring Cloud & Spring Cloud Alibaba 进行封装,内置了 Cat 监控等功能,将框架的操作进行统一封装和版本管理,方便快速构建微服务架构。让业务开发人员更关注于业务本身的开发工作。 Kitty Cloud 后端 使用Kitty基础框架搭建的微服务架构,业务方向是做一个技术社区。比如发文章,评论,点赞等功能。 Kitty Cloud 前端(待开发) 前端还没开始,等后端做完后会开始做前端,应该会采用Vue实现。 后端技术栈 Kitty :Spring Cloud & Spring Cloud Alibaba 基础框架,内置了 Cat 监控,互联网公司落地 Spring Cloud 架构必备。 Spring Cloud :Spring 微服务全家桶。 Spring Cloud Alibaba :致力于提供微服务开发的一站式解决方案。 Sentinel :把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 Nacos :一个更易于构建云原生应用的动态服务发现

最新咕咆+鲁班+图灵+享学+蚂蚁+硅谷+源码 Java架构师资料《Java架构师VIP课程》

做~自己de王妃 提交于 2020-04-12 15:29:46
最新的Java架构师完整资料,完整视频+源码+文档。 每一套都是一百多个G的资料,无密。 JAVA架构师全套课程 咕泡学院互联网架构师第一期 咕泡学院互联网架构师第二期 咕泡学院互联网架构师第三期 博学谷javaee在线就业2.0加薪课(价值15000) 开课吧2019廖雪峰JavaEE企业级分布式高级架构师完整版 享学课堂JAVA互联网架构师VIP 蚂蚁金服微服务互联网架构第一期-Java高端培训视频教程 蚂蚁金服微服务互联网架构第二期-Java高端培训视频教程 蚂蚁金服微服务互联网架构第三期-Java高端培训视频教程 蚂蚁金服微服务互联网架构第四期-Java高端培训视频教程 鲁班学院《Java架构师VIP2019课程一期》 黑马JavaEE 57期完整版 2018廖雪峰 JavaEE 企业级分布式高级架构师课程(一期+二期) 优效学院JAVA高级架构师全套视频第一期 开课吧百万年薪架构师一期(智能互联网之容器弹性云与Service Mesh)视频教程 大数据架构师全套课程 八斗大数据全套视频教程第九期-2019年八斗大数据 2019好程序员大数据+人工智能全套课程视频教程 2019最新八斗大数据培训第六期VIP教程全套完整版 百知教育《2019最新JAVA大数据系列课程》 潭州学院《大数据课程》2019 北京尚学堂_1903期_大数据_全套视频教程(视频、源码、课件) 尚硅谷

终于有人把“TCC分布式事务”实现原理讲明白了!

孤街醉人 提交于 2020-04-12 13:29:49
之前网上看到很多写分布式事务的文章,不过大多都是将分布式事务各种技术方案简单介绍一下。很多朋友看了还是不知道分布式事务到底怎么回事,在项目里到底如何使用。 所以这篇文章,就用大白话+手工绘图,并结合一个电商系统的案例实践,来给大家讲清楚到底什么是 TCC 分布式事务。 首先说一下,这里可能会牵扯到一些 Spring Cloud 的原理,如果有不太清楚的同学,可以参考之前的文章: 《拜托,面试请不要再问我Spring Cloud底层原理!》 。 业务场景介绍 咱们先来看看业务场景,假设你现在有一个电商系统,里面有一个支付订单的场景。 那对一个订单支付之后,我们需要做下面的步骤: 更改订单的状态为“已支付” 扣减商品库存 给会员增加积分 创建销售出库单通知仓库发货 这是一系列比较真实的步骤,无论大家有没有做过电商系统,应该都能理解。 进一步思考 好,业务场景有了,现在我们要更进一步,实现一个 TCC 分布式事务的效果。 什么意思呢?也就是说,[1] 订单服务-修改订单状态,[2] 库存服务-扣减库存,[3] 积分服务-增加积分,[4] 仓储服务-创建销售出库单。 上述这几个步骤,要么一起成功,要么一起失败,必须是一个整体性的事务。 举个例子,现在订单的状态都修改为“已支付”了,结果库存服务扣减库存失败。那个商品的库存原来是 100 件,现在卖掉了 2 件,本来应该是 98 件了。

分布式系统CAP理论的证明与应用

我只是一个虾纸丫 提交于 2020-04-12 11:14:29
分布式系统的特点 随着移动互联网的快速发展,互联网的用户数量越来越多,产生的数据规模也越来越大,对应用系统提出了更高的要求,我们的系统必须支持高并发访问和海量数据处理。 分布式系统技术就是用来解决集中式架构的性能瓶颈问题,来适应快速发展的业务规模,一般来说,分布式系统是建立在网络之上的硬件或者软件系统,彼此之间通过消息等方式进行通信和协调。 分布式系统的核心是可扩展性,通过对服务、存储的扩展,来提高系统的处理能力,通过对多台服务器协同工作,来完成单台服务器无法处理的任务,尤其是高并发或者大数据量的任务。 除了对可扩展性的需求,分布式系统还有不出现单点故障、服务或者存储无状态等特点。 单点故障(Single Point Failure)是指在系统中某个组件一旦失效,这会让整个系统无法工作,而不出现单点故障,单点不影响整体,就是分布式系统的设计目标之一; 无状态,是因为无状态的服务才能满足部分机器宕机不影响全部,可以随时进行扩展的需求。由于分布式系统的特点,在分布式环境中更容易出现问题,比如节点之间通信失败、网络分区故障、多个副本的数据不一致等,为了更好的在分布式系统下进行开发,学者们提出了一系列的理论,其中具有代表性的就是CAP理论。 CAP 代表什么含义 CAP 理论可以表述为,一个分布式系统最多只能同时满足 一致性 (Consistency)、 可用性 (Availability

springcloud 二 微服务简介

扶醉桌前 提交于 2020-04-11 17:24:38
1.微服务的简介 假设一个场景:网上电影购票系统,涉及的模块有电影模块、订单模块、用户模块。 在没有微服务之前,我们的做法可能是,一个项目,存放所有的模块信息,当前,这种做法也没有问题,可以实现功能,随着我们的业务系统越来越大,代码量,还有用户人群越来越大,这样脓肿的项目,就会存在各种各样的问题,代码维护成本,硬件成本,不好维护等等。这样微服务就应运而生。 我们常说微服务,那什么是微服务? 所谓的微服务是SOA架构下的最终产物,该架构的设计目标是为了肢解业务,使得服务能够独立运行。微服务设计原则:1、各司其职 2、服务高可用和可扩展性。 微服务架构是从SOA架构演变而来的,比SOA架构粒度更加精细,让专业的人,做专业的事,目的是为了提高效率,每个服务于服务之间互不影响,每个服务必须独立部署(独立数据库,独立redis),微服务架构更加体现轻量级,采用restful风格提供api,也就是使用http协议+json格式进行传输,更加轻巧,更加适合于互联网公司进行敏捷开发,快速迭代产品。而SOA架构采用的是SOAP协议,也就是http+xml(占用空间大) 2.微服务的优点 2.1易于开发和维护 一个微服务只关注一个特定业务功能,所以代码逻辑清晰,代码量少,这样就易于维护,而整个应用是有 多个微服务构建而成。例如:上面的购票系统,用户模块就需要辅助用户的业务逻辑,而不用管电影,订单的业务

springcloud 一 网站架构演变之路

笑着哭i 提交于 2020-04-11 17:24:22
1.网站架构演变过程 从传统架构(单点应用)→分布式架构(以项目进行拆分)→SOA架构(面向服务架构)→微服务架构 1.1传统架构: 其实就是ssh架构或者ssm架构,属于单点应用,把整个开发业务模块都会在一个项目中开发,分为mvc架构,是模型(model)-视图(view)-控制器(controller)的缩写,我是15年5月来的深圳,我记得只要会ssh和ssm,找工作,随随便便找。而现在需要会dubbo等等分布式技术的,当然,只会ssh或者ssm架构的也招,以前,可能没有什么太大的年限限制,但是现在,限制一般都是3年起步,工作年限低了,不要。 这种架构包主要分为dao,controller,service,mapper,util 一般只适合1个人或者小团队开发(小项目) 缺点:耦合度太高,一旦,某个模块不可用,会影响到整个项目的不可用。 1.2分布式架构: 分布式架构是基于传统架构演变而来的 假设有30多个人,对同一项目进行开发,可能有什么问题?(本人之前带的一个项目组,就是20来个人,负责一个项目,我们是按模块进行划分的) 1.代码冲突问题, 就算按模块拆分, 模块与模块肯定有交集,所以会存在代码冲突的问题。 1.2.1什么是分布式架构? 分布式架构实际上是传统架构演变而来的,实际上,就是按模块,把项目进行拆分成一个个子项目。如电影系统,可简单拆分为电影项目,用户项目

SpringCloud 教程

亡梦爱人 提交于 2020-04-11 17:24:07
码农下载: https://git.oschina.net/forezp/SpringCloudLearning github下载: https://github.com/forezp/SpringCloudLearning ,记得star哦! Spring Cloud Alibaba教程 Spring Cloud Alibaba教程:使用Nacos作为服务注册发现组件 Spring Cloud Alibaba教程:使用Nacos作为配置中心 Spring Cloud Alibaba教程:Sentinel的使用 Greenwich版本 Spring Cloud Consul 之Greenwich版本全攻略 spring cloud config将配置存储在数据库中 Spring Cloud Sleuth 之Greenwich版本全攻略 Spring Boot Admin 2.1.0 全攻略 Finchley版本 Spring Cloud Finchley; Spring Boot 2.0.3 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)(Finchley版本) 史上最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)(Finchley版本) 史上最简单的SpringCloud教程 | 第三篇:

spring cloud hystrix断路器

一笑奈何 提交于 2020-04-11 15:00:40
hystrix可以为我们解决微服务中的:断路器、服务降级、服务熔断、服务隔离机制、服务雪崩效应 服务降级:超时降级、失败次数降级、故障降级、限流降级。可以参考纯洁,我觉得讲的非常棒: https://blog.csdn.net/ityouknow/article/details/81230412 服务隔离:线程池隔离,每个服务接口都有自己的独立线程池,每个线程池互不影响,就是CPU占用率高(只需核心接口需要)。信号量隔离: 服务熔断:在高并发的情况下,如果请求达到一定的极限(自己设置的阈值),自动开启服务保护功能,使用服务降级方式返回一个友好提示。服务熔断和服务降级一起使用的。 这个例子基于服务注册后的代码来搞的,因为测试需要访问两个站点,模拟其中一个站点故障。 https://my.oschina.net/uwith/blog/1929697 1、首先添加pom引用 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency> 2、在application启动类中添加注解 package com.example.clienttest; import org