Spring Cloud

springcloud ribbon 的使用 服务内部调用

眉间皱痕 提交于 2020-07-28 11:20:40
ribbon 可以看到 Feign 调用步骤比较繁琐,并且传参数以及经过zuul 问题较多 再来看看ribbon 只需要在 implements 接口类里面引入一个 ribbon 均衡,再方法中调用即可 /** * www.1b23.com */ @Service @Transactional //开启事物 public class UsersServiceImpl implements UsersService { @Autowired private LoadBalancerClient loadBalancerClient; //ribbon负载均衡器 ...... /**保存用户 * @param pd * @throws Exception */ public void saveUser (PageData pd) throws Exception { usersMapper .saveUser (pd); pd .put ( "tokenKey" , Tools.creatTokenKey( "userAdd" )); LoadBalancerUtil .responseByPost (this.loadBalancerClient, "fh-dbsync" , "user/add" , pd); //请求数据库表同步微服务 } } "fh-dbsync"

网关之多维度限流

寵の児 提交于 2020-07-28 11:09:36
github https://github.com/marcosbarbero/spring-cloud-zuul-ratelimit spring-cloud-zuul-ratelimit 说明 spring-cloud-zuul-ratelimit是和zuul整合提供分布式限流策略的扩展 对请求的目标URL进行限流(例如:某个URL每分钟只允许调用多少次) 对客户端的访问IP进行限流(例如:某个IP每分钟只允许请求多少次) 对某些特定用户或者用户组进行限流(例如:非VIP用户限制每分钟只允许调用100次某个API等) 多维度混合的限流。此时,就需要实现一些限流规则的编排机制。与、或、非等关系。 支持的限流粒度 服务粒度 (默认配置,当前服务模块的限流控制) 用户粒度 用户限流的实现:如果你的项目整合 Shiro 或者 Spring Security 安全框架,那么会自动维护request域UserPrincipal,如果是自己的框架,请登录成功后维护request域UserPrincipal,才能使用用户粒度的限流。未登录默认是:anonymous ORIGIN粒度 (用户请求的origin作为粒度控制) 某个IP的客户端被限流并不影响其他客户端,即API网关对每个客户端限流是相互独立的 URL 接口粒度 (请求接口的地址作为粒度控制) 以上粒度自由组合,又可以支持多种情况。

SpringCloud之Ribbon

主宰稳场 提交于 2020-07-28 07:53:05
SpringCloud通过Ribbon实现负载均衡。 一、添加Maven依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency> 二、application.yml配置 eureka: client: serviceUrl: defaultZone: http: // localhost:8761/eureka/ server: port: 8765 spring: application: name: blog -ribbon-client 三、主类编写

Java 可重入锁内存可见性分析

邮差的信 提交于 2020-07-28 06:33:40
作者:周童 来自酒店搜索报价中心,主要负责酒店报价缓存,计算相关系统的开发以及性能优化等工作,热爱摩旅。 一个习以为常的细节 之前在做 ReentrantLock 相关的试验,试验本身很简单,和本文相关的简化版如下:**(提示:以下代码均可左右滑动) 就是通过可重入锁的保护并行对共享变量进行自增。 突然想到一个问题:**共享变量 count 没有加 volatile 修饰,那么在并发自增的过程当中是如何保持内存立即可见的呢?**上面的代码做自增肯定是没问题的,可见 LOCK 不仅仅保证了独占性,必定还有一种机制保证了内存可见性。 可能很多人和我一样,对 LOCK 的认知是如此 “理所应当”,以至于从没有去思考为什么。就好像每天太阳都会从东方升起而不觉得这有什么好质疑的。现在既然问到这儿了,那就准备一探究竟。 几个概念 Java Memory Model (JMM) 即 Java 内存模型,直接引用 wiki 定义: "The Java memory model describes how threads in the Java programming language interact through memory. Together with the description of single-threaded execution of code, the memory

到底什么级别才算是高并发?

為{幸葍}努か 提交于 2020-07-28 03:36:44
作者:边鹏_尛爺鑫 https://segmentfault.com/a/1190000010844969 大家心里仔细想想,当你们听到高并发网站时,心里对这个网站是个什么概念? 首先想到的是淘宝吗?带着问题,我们一起思考技术~ 写这个话题是因为我对搜索引擎给我的答案很不满意,然后决定把思考的一些东西分享出来,希望可以大家彼此讨论下。 我们经常在面试的时候,被问到有没有高并发的经验?先不说哪些考高并发的装逼公司。我思考的是什么才算是高并发?你一天几个pv肯定高不了。首先在网上查找一下,并未找到明确的标准定义。那么什么是并发呢? 并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。 摘自百度百科 我们说的高并发是什么? 上面的定义明显不是我们通常所言的并发,在互联网时代,所讲的并发、高并发,通常是指并发访问。也就是在某个时间点,有多少个访问同时到来。 我看到有人给高并发下了类似的定义: 高并发通常是指我们提供的系统服务能够同时并行处理很多请求。 来看看这个定义,这里首先把并发给混淆到并行了。关于并发并行的区别看这里我就不多说,继续探讨并发。 然后定义又说很多请求?什么叫很多请求?做为中国人,这个词让我想象力一发不可收拾......好了,拉回来,继续本文。 那么从上面的分析

SpringCloud之Zuul

天大地大妈咪最大 提交于 2020-07-28 03:30:33
使用SpringCloud Zuul实现网关代理。 一、Maven依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> </dependency> 二、编写配置(application.yml) eureka: client: serviceUrl: defaultZone: http: // localhost:8761/eureka/ server: port: 8769 spring: application: name: blog -zuul- client zuul:

微服务的4个设计原则和19个解决方案

老子叫甜甜 提交于 2020-07-28 03:29:29
本文转自: http://developer.51cto.com/art/201709/552085.htm 微服务架构现在是谈到企业应用架构时必聊的话题,微服务之所以火热也是因为相对之前的应用开发方式有很多优点,如更灵活、更能适应现在需求快速变更的大环境。 本文将介绍微服务架构的演进、优缺点和微服务应用的设计原则,然后着重介绍作为一个“微服务应用平台”需要提供哪些能力、解决哪些问题才能更好的支撑企业应用架构。 微服务平台也是我目前正在参与的,还在研发过程中的平台产品,平台是以SpringCloud为基础,结合了普元多年来对企业应用的理解和产品的设计经验,逐步孵化的一个微服务应用平台。 一、微服务架构演进过程 近年来我们大家都体会到了互联网、移动互联带来的好处,作为IT从业者,在生活中时刻感受互联网好处的同时,在工作中可能感受的却是来自自互联网的一些压力,那就是我们传统企业的IT建设也是迫切需要转型,需要面向外部客户,我们也需要应对外部环境的快速变化、需要快速创新,那么我们的IT架构也需要向互联网企业学习作出相应的改进,来支撑企业的数字化转型。 我们再看一下应用架构的演进过程,回忆一下微服务架构是如何一步一步进化产生的,最早是应用是单块架构,后来为了具备一定的扩展和可靠性,就有了垂直架构,也就是加了个负载均衡,接下来是前几年比较火的SOA,主要讲了应用系统之间如何集成和互通

真的简单,文本文件逐行处理–用java8 Stream流的方式

|▌冷眼眸甩不掉的悲伤 提交于 2020-07-27 22:43:10
本文中为大家介绍使用java8 Stream API逐行读取文件,以及根据某些条件过滤文件内容 1. Java 8逐行读取文件 在此示例中,我将按行读取文件内容并在控制台打印输出。 Path filePath = Paths.get("c:/temp", "data.txt"); //try-with-resources语法,不用手动的编码关闭流 try (Stream<String> lines = Files.lines( filePath )) { lines.forEach(System.out::println); } catch (IOException e) { e.printStackTrace();//只是测试用例,生产环境下不要这样做异常处理 } 上面的程序输出将在控制台中逐行打印文件的内容。 Never store password except in mind. 2.Java 8读取文件–过滤行 在此示例中,我们将文件内容读取为Stream。然后,我们将过滤其中包含单词"password"的所有行。 Path filePath = Paths.get("c:/temp", "data.txt"); try (Stream<String> lines = Files.lines(filePath)){ List<String> filteredLines =

Spring Cloud Gateway VS Zuul 比较,怎么选择?

為{幸葍}努か 提交于 2020-07-27 22:30:48
Spring Cloud Gateway 是 Spring Cloud Finchley 版推出来的新组件,用来代替服务网关:Zuul。 那 Spring Cloud Gateway 和 Zuul 都有哪些区别呢,咱们来比较一下。 1、开源组织 Spring Cloud Gateway 是 Spring Cloud 微服务平台的一个子项目,属于 Spring 开源社区,依赖名叫:spring-cloud-starter-gateway。 https://spring.io/projects/spring-cloud-gateway Zuul 是 Netflix 公司的开源项目,Spring Cloud 在 Netflix 项目中也已经集成了 Zuul,依赖名叫:spring-cloud-starter-netflix-zuul。 https://github.com/Netflix/zuul 2、底层实现 https://stackoverflow.com/questions/47092048/how-is-spring-cloud-gateway-different-from-zuul 据 Spring Cloud Gateway 原作者的解释: Zuul构建于 Servlet 2.5,兼容 3.x,使用的是阻塞式的 API,不支持长连接,比如 websockets。另外

SpringCloud之服务注册中心和提供者(Eureka Server和Eureka Client)

跟風遠走 提交于 2020-07-27 22:04:59
一、使用Eureka Server搭建服务注册中心 1.Maven依赖 <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies> 2.配置文件(application.yml) server: port: 8761 eureka: evictionIntervalTimerInMs: 6000 instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http: // ${eureka.instance.hostname}:${server.port}/eureka/ spring: application: name: blog -eureka-server 3.启动类 package com.springcloud.blog; import org.springframework.boot.SpringApplication; import