Spring Cloud

zookeeper 简单配置

左心房为你撑大大i 提交于 2020-08-10 19:33:17
pom 文件 <!--spring 整合 zookeeper 客户端 --> <dependency> <groupId> org.springframework.cloud </groupId> <artifactId> spring-cloud-starter-zookeeper-discovery </artifactId> </dependency> 配置文件 server : port : 80 spring : application : name : cloud-order-service cloud : zookeeper : connect-string : 192.168.1.147:2181 启动类 @EnableDiscoveryClient @SpringBootApplication public class OrderZK80 { public static void main (String[] args) { SpringApplication. run (OrderZK80. class, args) ; } } 来源: oschina 链接: https://my.oschina.net/u/4253180/blog/4321287

【SpringCloud】Spring Cloud Alibaba 及 Nacos介绍(二十六)

↘锁芯ラ 提交于 2020-08-10 18:47:38
Spring Cloud Alibaba介绍   Spring Cloud Alibaba为分布式应用程序开发提供了一站式解决方案。它包含开发分布式应用程序所需的所有组件,使您可以轻松地使用Spring Cloud开发应用程序。   使用Spring Cloud Alibaba,您只需要添加一些注释和少量配置即可将Spring Cloud应用程序连接到Alibaba的分布式解决方案,并使用Alibaba中间件构建分布式应用程序系统。   官网: https://spring.io/projects/spring-cloud-alibaba 特征 流量控制和服务降级 :使用Sentinel进行流量控制,断路和系统自适应保护。 服务注册和发现 :实例可以在Nacos中注册,客户可以使用Spring管理的bean发现实例。 支持通过Spring Cloud Netflix的客户端负载均衡器Ribbon。 分布式配置 :使用Nacos作为数据存储 事件驱动 :构建与Spring Cloud Stream RocketMQ Binder连接的高度可扩展的事件驱动微服务 消息总线 :使用Spring Cloud Bus RocketMQ链接分布式系统的节点 分布式事务 :支持高性能且易于使用的Seata分布式事务解决方案 Dubbo RPC :通过 Dubbo RPC 扩展Spring

rabbitmq+sleuth+zinkip 分布式链路追踪

梦想与她 提交于 2020-08-10 18:23:30
我们都知道,微服务之间通过feign传递,在复杂的微服务架构系统中,几乎每一个前端请求都会形成一个复杂的分布式服务调用链路,在每条链路中任何一个依赖服务出现延迟超时或者错误都有可能引起整个请求最后的失败。当业务流程足够复杂时,一个完整的HTTP请求调用链一般会经过多个微服务系统,要通过日志来跟踪一整个调用链变得不再那么简单。通过sleuth可以很方便的看出每个采集请求的耗时情况,分析出哪些服务调用比较耗时,当服务调用的耗时随着请求量的增大而增大时,可以针对业务做一些优化措施。所以我们可以通过我们可以通过Spring Cloud Sleuth来解决这个问题。这里我们将演示如何通过Spring Cloud Sleuth来追踪这个过程,并借助Zipkin以图形化界面的方式展示。 展示之前,分别介绍一下rabbitmq、sleuth、zinkip。 rabbitmq RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。 sleuth和zinkip sleuth 是spring cloud的组成部分之一,为springcloud应用实现了一种分布式追踪解决方案,其兼容了zinkip,HTrace和log

非常接地气的架构和分层方法,值得学习!

不打扰是莪最后的温柔 提交于 2020-08-10 17:59:28
作者:咖啡拿铁 https://juejin.im/post/5b44e62e6fb9a04fc030f216 1、背景 说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。 看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦。 的确在这些人眼中分层只是一个形式,前辈们的代码这么写的,其他项目代码这么写的,那么我也这么跟着写。但是在真正的团队开发中每个人的习惯都不同,写出来的代码必然带着自己的标签。 有的人习惯controller写大量的业务逻辑,有的人习惯在service中之间调用远程服务,这样就导致了每个人的开发代码风格完全不同,后续其他人修改的时候,一看,我靠这个人写的代码和我平常的习惯完全不同,修改的时候到底是按着自己以前的习惯改,还是跟着前辈们走,这又是个艰难的选择,选择一旦有偏差,你的后辈又维护你的代码的时候,恐怕就要骂人了。 所以一个好的应用分层需要具备以下几点: 方便后续代码进行维护扩展; 分层的效果需要让整个团队都接受; 各个层职责边界清晰。 2、如何进行分层 2.1、阿里规范

聊聊微服务架构及分布式事务解决方案!

与世无争的帅哥 提交于 2020-08-10 17:59:14
作者:伈情的博客 http://nickid.cn/2017/04/分布式事务/ 分布式事务场景如何设计系统架构及解决数据一致性问题,个人理解最终方案把握以下原则就可以了,那就是:大事务=小事务(原子事务)+异步(消息通知),解决分布式事务的最好办法其实就是不考虑分布式事务,将一个大的业务进行拆分,整个大的业务流程,转化成若干个小的业务流程,然后通过设计补偿流程从而考虑最终一致性。 什么是事务 事务(Transaction)及其ACID属性 事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性: 原子性(Atomicity): 事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。 一致性(Consistent): 在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确的。 隔离性(Isoation): 数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。这意味着事务处理过程中的中间状态对外部是不可见的,反之亦然。 持久性(Durabe): 事务完成之后,它对于数据的修改是永久性的,即使出现系统故障也能够保持。 典型场景:银行转账业务 例如:李雷账户中有500块钱

每天进步一点点:“JVM性能调优解析”,分享JVM进阶面试题77问!

空扰寡人 提交于 2020-08-10 17:31:53
前言 Java虚拟机有自己完善的硬件架构,如处理器、堆栈等,还具有相应的指令系统。 Java虚拟机本质上就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令。Java语言的可移植性正是建立在Java虚拟机的基础上。任何平台只要装有针对于该平台的Java虚拟机,字节码文件(.class)就可以在该平台上运行。这就是“一次编译,多次运行”。 Java虚拟机不仅是一种跨平台的软件,而且是一种新的网络计算平台。该平台包括许多相关的技术,如符合开放接口标准的各种API、优化技术等。Java技术使同一种应用可以运行在不同的平台上。Java平台可分为两部分,即Java虚拟机(Java virtual machine,JVM)和Java API类库。 分享详细解析77道Java面试时常问的JVM题,希望对各位有所帮助,另外我针对当前互联网面试总结一些资料给大家,文末有领取方式(诚意满满) 由于文章篇幅问题,我这里就不一一解析了,需要获取全部答案解析的可以 关注公众号【风平浪静如码】获取文档! 1、java中会存在内存泄漏吗,请简单描述。 2、64 位 JVM 中,int 的长度是多数? 3、Serial 与 Parallel GC 之间的不同之处? 4、32 位和 64 位的 JVM,int 类型变量的长度是多数? 5、Java 中 WeakReference 与

非常有用的并发控制-倒计时器CountDownLatch

丶灬走出姿态 提交于 2020-08-10 17:29:12
CountDownLatch见名思义,即倒计时器,是多线程并发控制中非常有用的工具类,它可以控制线程等待,直到倒计时器归0再继续执行。 给你出个题,控制5个线程执行完后主线徎再往下执行,并统计5个线程的所耗时间。当然我们可以通过join的形式完成这道题,但如果我说统计100个1000个线程呢?难道要写1000个join等待吗?这显然是不现实的。 废话少说,我们来做一个例子看看上面的题怎么实现,并理解倒计时器。 首先通过new CountDownLatch(5)约定了倒计时器的数量,在这里也是线程的数量,每个线程执行完后再对倒计时器-1。countDown()方法即是对倒计时器-1,这个方法需要放在finally中,一定要保证在每个线程中得到释放,不然子线程如果因为某种原因报错倒计时器永远不会清0,则会导报主线程会一直等待。 await()方法即是主线程阻塞等待倒计器归0后再继续往下执行,当然await可以带时间进去,等待多久时间后不管倒计时器有没有归0主线程继续往下执行。 如上面的例子所示,我们输出了倒计时器最后的数字0,表示倒计时器归0了,也输出了从开始到结束所花费的时间。从这个例子可以完全理解倒计时器的含义,这个工具类在实际开发经常有用到,也很好用。 推荐去我的博客阅读更多: 1. Java JVM、集合、多线程、新特性系列教程 2. Spring MVC、Spring

Kitty中的动态线程池支持Nacos,Apollo多配置中心了

六月ゝ 毕业季﹏ 提交于 2020-08-10 17:18:55
目录 回顾昨日 nacos 集成 Spring Cloud Alibaba 方式 Nacos Spring Boot 方式 Apollo 集成 自研配置中心对接 无配置中心对接 实现源码分析 兼容 Apollo 和 Nacos NoClassDefFoundError Apollo 自动刷新问题 回顾昨日 上篇文章 《一时技痒,撸了个动态线程池,源码放 Github 了》发出后很多读者私下问我这个能不能用到工作中,用肯定是可以用的,本身来说是对线程池的扩展,然后对接了配置中心和监控。 目前用的话主要存在下面几个问题: 还没发布到 Maven 中央仓库(后续会做),可以自己编译打包发布到私有仓库(临时方案) 耦合了 Nacos,如果你项目中没有用 Nacos 或者用的其他的配置中心怎么办?(本文内容) 只能替换业务线程池,像一些框架中的线程池无法替换(构思中) 本文的重点就是介绍如何对接 Nacos 和 Apollo,因为一开始就支持了 Nacos,但是支持的方式是依赖了 Spring Cloud Alibaba ,如果是没有用 Spring Cloud Alibaba 如何支持,也是需要扩展的。 Nacos 集成 Nacos 集成的话分两种方式,一种是你的项目使用了 Spring Cloud Alibaba ,另一种是只用了 Spring Boot 方式的集成。 Spring

SpringBoot中使用dubbo实现RPC调用

房东的猫 提交于 2020-08-10 16:38:48
Dubbo(来自于阿里巴巴) Dubbo是一个分布式服务框架,致力于提供高性能和透明化的PRC远程调用服务调用方案。 Dubbo的的特点 通过spring配置的方式即可完成服务化,对于应用无入侵。(SpringCloud有一定的入侵) 通过maven的install &deploy命令把interface和Model层发布到仓库中,服务调用方只需要依赖interface和model层即可。 通过zookeeper设置达到注册服务和心跳检测,通过gateWay前置网关(Clound使用Zuul实现负载均衡将请求转向Eureka服务器)隔绝外部直接调用原子服务的风险 SpringBoot中使用Dubbo 引入依赖 < ! -- dubbo依赖 -- > < dependency > < groupId > com . alibaba < / groupId > < artifactId > dubbo < / artifactId > < version > 2.6 .6 < / version > < / dependency > < dependency > < groupId > org . apache . curator < / groupId > < artifactId > curator - framework < / artifactId > < version >