分布式
借汝之光,得以光明
不平凡的人生注定不平凡的路。
展开
-
微服务:Spring Cloud Config 配置中心
对于传统的单体应用而言,常使用配置文件来管理所有配置,比如SpringBoot的application.yml文件,但是在微服务架构中全部手动修改的话很麻烦而且不易维护。微服务的配置管理一般有以下需求:集中配置管理,一个微服务架构中可能有成百上千个微服务,所以集中配置管理是很重要的。 不同环境不同配置,比如数据源配置在不同环境(开发,生产,测试)中是不同的。 运行期间可动态调整。例如,可根据各个微服务的负载情况,动态调整数据源连接池大小等 配置修改后可自动更新。如配置内容发生变化,微服务可以原创 2020-06-01 13:29:44 · 850 阅读 · 0 评论 -
微服务:SpringCloudStream学习
看一张小图:比如,这是我们一个完整的项目(脑补完整!!)。此时中间件用的是RabbitMQ,如果现在项目需求换成ActiveMQ(对,就是一个很傻x的需求),你咋办?思考60分钟3秒。......................决定改代码!!!那你就太low了,我们srpingCloud为我们提供了一个组件去解决这个问题。一、Spring Cloud Stream 在实际的企业开发中,消息中间件是至关重要的组件之一。消息中间件主要解决应用解耦,异步消息,流量削锋等问题,实现.原创 2020-05-31 17:27:55 · 261 阅读 · 0 评论 -
微服务:SpringCloud 分布式链路追踪sleuth、zipkin
一、微服务架构下的问题在大型系统的微服务化构建中,一个系统会被拆分成许多模块。这些模块负责不同的功能,组合成系统,最终可以提供丰富的功能。在这种架构中,一次请求往往需要涉及到多个服务。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心,也就意味着这种架构形式也会存在一些问题:如何快速发现问题? 如何判断故障影响范围? 如何梳理服务依赖以及依赖的合理性? 如何分析链路性能问题以及实时容量规原创 2020-05-31 10:57:11 · 241 阅读 · 0 评论 -
微服务:SpringCloud GateWay网关
Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,旨在为微服务架构提供一种简单而有效的统一的 API 路由管理方式,统一访问接口。Spring Cloud Gateway 作为 Spring Cloud 生态系中的网关,目标是替代 Netflflix ZUUL,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。它是基于原创 2020-05-29 17:55:13 · 900 阅读 · 0 评论 -
微服务:SpringCloud zuul网关
一、存在的问题在之前的文章中,微服务架构已经初具雏形。但还有一些问题:不同的微服务一般会有不同的网 络地址,客户端在访问这些微服务时必须记住几十甚至几百个地址,这对于客户端方来说太复杂也难以维护。如下图:前端应用程序调用我们消费者提供的接口会有以下几个问题:客户端会请求多个不同的服务,需要维护不同的请求地址,增加开发难度 (各个消费者ip不同) 在某些场景下存在跨域请求的问题 加大身份认证的难度,每个微服务需要独立认证(关于微服务认证,可以看我之前的文章,深入的讲解了分.原创 2020-05-28 16:50:01 · 168 阅读 · 0 评论 -
微服务:SpringCloud 比hystrix牛的Sentinel(国人的骄傲!)
一、简介随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 Sentinel 具有以下特征: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。 完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到..原创 2020-05-27 15:15:47 · 574 阅读 · 0 评论 -
微服务:SpringCloud hystrix 服务熔断、断路器、隔离
一、雪崩效应在微服务架构中,一个请求需要调用多个服务是非常常见的。如客户端访问A服务,而A服务需要调用B 服务,B服务需要调用C服务,由于网络原因或者自身的原因,如果B服务或者C服务不能及时响应,A服 务将处于阻塞状态,直到B服务C服务响应。此时若有大量的请求涌入,容器的线程资源会被消耗完毕, 导致服务瘫痪。服务与服务之间的依赖性,故障会传播,造成连锁反应,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。雪崩是系统中的蝴蝶效应导致其发生的原因多种多样,有不合理的容量设.原创 2020-05-26 22:43:13 · 441 阅读 · 0 评论 -
微服务:SpringCloud 高并发出现的问题以及解决办法(一篇文章给你安排的明明白白的!!!)
之前的做文章讲述了一些常用的组件,这次我们来聊聊基于上面组件的高并发问题。我们先以高并发时,项目程序出现的现象入手。一、修改项目order-service这里面我们不采用feign,而是采用普通的http请求的方式,用restTemplate。这里有两个接口。@RestController@RequestMapping("/order")public class OrderController { @Autowired private ProductFeginClie原创 2020-05-26 17:34:30 · 4861 阅读 · 1 评论 -
微服务:SpringCloud 使用Feign组件
一、之前项目存在的问题我们这样去调用微服务:是不是感觉不好啊,怎么可能去拼字符串呢?low爆了对吧。我们的Feign组件就是解决这个问题滴!二、Feign组件1、简介Feign是Netflflix开发的声明式,模板化的HTTP客户端,其灵感来自Retrofifit,JAXRS-2.0以及WebSocket. Feign可帮助我们更加便捷,优雅的调用HTTP API。 在SpringCloud中,使用Feign非常简单——创建一个接口,并在接口上添加一些注解,代码就.原创 2020-05-26 14:43:29 · 375 阅读 · 0 评论 -
微服务:SpringCloud 使用consul来代替eureka注册中心
Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其它分布式服 务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与发现框 架、分布一致性协议实 现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其它工具(比如 ZooKeeper 等)。 使用起来也较 为简单。Consul 使用 Go 语言编写,因此具有天然可移植性(支持Linux、windows和 Mac OS X);安装包仅包含一个可执行文件,方便部署,与 Docker原创 2020-05-26 10:12:42 · 647 阅读 · 0 评论 -
微服务:SpringCloud 添加ribbon 负载均衡(+源码分析!)
在之前注册中心那一章,消费者调用提供者的接口,是需要写死这样的url的。但是真实的环境我们一般要求服务提供者高可用,所以呢同一个服务需要多个服务提供者。那么消费者就不能够写死这个url了。所以基于如此我们改一下代码。一、修改代码,添加ribbon实现负载均衡1、服务提供者首先呢,用ip+port用于区别调用不同的服务。设置到ProductName我们用两个application分别启动同一个项目, 不过用的是不同端口,模拟两个服务。记得修改端口。当然如果不会的话,就copy一下再建立一.原创 2020-05-25 09:22:54 · 232 阅读 · 0 评论 -
你知道springboot的自动装载机制吗?一篇文章让你豁然开朗!!!
之前学完ssm的时候,当时做了一个简单的小网站,非常开心,但是对于那些配置文件刚开始还是有些头疼。后来学习到springboot,就感觉太清爽了!!!去nmd配置文件,我们只需要在application.properties配置一些mybatis、数据源、端口、视图解析器等就可以了。开发一个小网站很快就完成了。不知道大家第一次接触springboot是什么感觉,我第一感觉就是不用配置那么多配置文件了。但是真的不用配置了吗?为什么不需要我们配置了呢?大家想过这个问题吗?这里有一个叫做springboot自原创 2020-05-24 11:09:46 · 1128 阅读 · 0 评论 -
微服务:SpringCloud 注册中心(Eureka)+ 源码分析est
一、没有注册中心的模拟微服务这里有四个项目,其中三个是服务提供者,这三个服务提供者通过@RestController暴露rest接口,供消费者去调用。消费者可以用java代码编写get或者post请求,我们通常用的是RestTmplate,这个spring为我们提供好的类,特别好用!正常情况下,我们就可以很顺利的调用这些服务了。这个是没有问题的!小伙伴们可能要问,这能调用。我们直接搞就行了,为啥还用注册中心呢?多此一举?我们来考虑这样几个问题:(1)在我们调用提供者的接口的时候,是不是要将他原创 2020-05-21 14:49:58 · 417 阅读 · 0 评论 -
微服务:系统架构的演变
通过这篇文章我们来学习我们项目系统架构的演变过程。没部署过项目的或者没做过项目的小伙伴也可以康康,hhhh..当我们系统的用户逐渐增多,我们系统就必须具备了高可用、高并发这样的特性。如何解决?1、单体应用架构这种应用架构就是我们在校园中做项目(例如一个网站、一个小程序等)经常用的架构,说白了,学校也不可能给你几台服务器让你玩分布式,第一是有这种需求也不会交给学生做,第二是学校的系统一般的并发量还没达到这个级别。我个人现在大三,在学校做过大大小小很多系统,到最后说白了就是反复做同一个事,也没啥原创 2020-05-20 21:51:07 · 798 阅读 · 0 评论 -
自己手写一个RPC,实现远程调用功能(基于netty、反射和代理)
emmm,昨天蘑菇街一面,我感觉面试官特好,问了我几个相对开放的问题,没怎么问基础。但是我感觉我答的不很好,第一次面大公司有点紧张。希望过过过!!!其中有一个题,面试官说你手动搭建过springboo + zookeeper + dubbo是吧,那么dubbo的原理是怎样的呢,或者你手动搭建一个dubbo你想这么做呢?基于这个原因,我今天就花费了半天的时间通过查资料做了一个远程调用rpc。首先...原创 2020-04-02 21:52:16 · 1250 阅读 · 0 评论 -
手动搭建springboot + dubbo + zookeeper的RPC框架
1、什么是RPC?rpc全称Remote Procedure Call,中文 = 远程调用。我们先来看一下本地调用。本地调用例如:我们在程序里的controller调用了service层的一个方法,在一台机器上这就是本地调用。也就是说这个方法(服务)与调用的程序是在同一个进程中。这样我们通过底层指针(地址)就可以直接找到调用的是哪个方法了。远程调用但是对于一些并发量超过二十...原创 2020-03-14 12:30:55 · 644 阅读 · 0 评论