随笔分类 - 分布式
摘要:1 为什么要有分布式锁 在分布式系统中,如果多个节点(JVM)操作同一份资源,会产生数据不一致的情况。 2 实现分布式锁的核心思路 保证在某个时刻只有一JVM可以进行操作 3redis实现分布式锁 获取锁,多个JVM通过setnx命令,同时在redis上创建相同的key,返回1表示获取到锁,返回0表
阅读全文
摘要:一 单体应用架构的缺点 每次编译上线都需要全部的代码编译,编译花费时间比较多 所有的模块都耦合在一起了,无法针对某个特定的模块做优化,比如首页和登录页面,他们的访问量是不一样的。首页的QPS高,应该多部署几台机器 无法做服务器的水平扩展(一般是session与tomcat是绑定的) 单个数据库的存储
阅读全文
摘要:在微服务中,每个微服务都需要知道当前访问的用户是谁,拥有什么权限。一般有两种方案 第一种方案:用户登录后,将用户的权限信息存到redis中,用户访问某个url时在网关的前置过滤器里进行鉴权(网关只需要访问redis即可),当用户的权限信息变动后,异步通知给网关,网关监听到后更新到redis中。 第二
阅读全文
摘要:JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息 一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名(他们之间用.分割开来) head 头部 {"typ":"JWT","alg":"HS256"} 进行base6
阅读全文
摘要:FastDFS是由国人余庆开发的,采用c语言编写。轻量级的分布式文件系统。充分考虑了冗余备份、负载均衡、线性扩容等机制,解决了大容量存储问题。 FastDFS由两个组件组成。TrackerServer 和 StorageServer 组成。 TrackerServer 负责调度和负载均衡。被称为调度
阅读全文
摘要:几种MQ的比较 ActiveMQ 基于java开发,遵循JMS规范,产品不怎么维护了,适合中小型企业使用 RabbitMQ 基于erlang开发,erlang先天性支持高并发,支持AMQP协议,适合对稳定性要求高的企业级应用 Kafka 基于java开发,高性能,高吞吐量,可动态扩容,应用在大数据日
阅读全文
摘要:(1)消息中间件可以做什么:应用解耦,异步通讯,流量削峰 应用解耦:没有使用消息中间件之前是A应用要和B应用,C应用通讯,一般采用http接口方式,这时A和B,C是耦合的。采用消息中间件后,A,B,C只和消息中间件通讯,实现了应用之间的解耦 异步通讯:对于非主要业务的逻辑可以采用发送消息的方式 流量
阅读全文
摘要:Ribbon属于客户端负载均衡:在调用接口的时候,会通过服务别名到eureka上获取服务的信息列表,缓存到jvm本地,在本地采用RPC远程调用技术去调用接口,实现负载均衡。可以设置调用的规则是请求总数%服务信息列表集合 Nignx属于服务器端负载均衡:客户端发送请求到Nginx后,由nginx将请求
阅读全文
摘要:在分布式系统中,多个jvm对共享资源进行操作时候,要加上锁,这就是分布式锁 利用zookeeper的临时节点的特性,可以实现分布式锁 项目结构: github下载地址:https://github.com/jake1263/zookeeper-lock
阅读全文
摘要:利用了zookeeper的临时节点的特点,生产者将自己的服务信息注册到zookeeper当中,消费者去zookeeper当中取出服务信息的集合,本地实现负载均衡 项目结构: github下载地址:
阅读全文
摘要:实现思路:当客户端发送请求到服务端后,在后台生成一个token,将token作为key,用户状态信息作为value,存入redis缓存中,并设置过期时间,最后把token返回给客户端 客户端将token保存在本地,当第二次发送请求到服务端时,在请求头中或者请求参数中携带token值,后台就可以从re
阅读全文
摘要:为了方便客户端调用微服务,所以设计出了网关。在微服务实例地址发生改变的情况下,客户端调用服务要能够不受影响。 网关可以完成的功能:路由,反向代理,日志记录,权限控制,限流 在本例子中 Eureka 服务注册中心 Zuul网关,要将Zuul注册到服务注册中心 Producer , 服务提供者,实例名为
阅读全文
摘要:RPC(Remote Procedure Call)即远程过程调用,它允许像调用本地服务一样调用远程服务 HTTP是一种基于TCP的网络传输协议 RPC并没有规定数据传输格式,这个格式可以任意指定,不同的RPC协议,数据格式不一定相同,RPC方式需要在API层面进行封装,限制了开发的语言环境 从速度
阅读全文
摘要:Eureka作为服务的注册与发现组件 通过idea创建Eureka服务端工程,提供服务注册和发现 启动类添加注解 配置文件 Eureka的监控界面是 ,目前没有服务注册 通过idea创建Eureka服务提供者工程 配置文件 Eureka-provider启动两次,端口一个是8765,端口一个是876
阅读全文
摘要:hystrix是一个用来做服务保护,服务容错的框架 容错: 服务在发生错误,不可用的情况下的处理方案,包括服务的熔断,降级,限流 服务熔断:目的是保护服务在高并发情况下,如果请求到达了设定的阈值,采用服务降级方式返回友好提示给客户端,通常服务熔断和服务降级是一起使用的。阈值可以理解为当设置一个服务同
阅读全文

浙公网安备 33010602011771号