集群技术

大厂面试题:集群部署时的分布式 session 如何实现?

自作多情 提交于 2020-02-25 23:26:02
面试官心理分析 面试官问了你一堆 dubbo 是怎么玩儿的,你会玩儿 dubbo 就可以把单块系统弄成分布式系统,然后分布式之后接踵而来的就是一堆问题,最大的问题就是分布式事务、接口幂等性、分布式锁,还有最后一个就是分布式 session。 当然了,分布式系统中的问题何止这么一点,非常之多,复杂度很高,这里只是说一下常见的几个问题,也是面试的时候常问的几个。 面试题剖析 session 是啥?浏览器有个 cookie,在一段时间内这个 cookie 都存在,然后每次发请求过来都带上一个特殊的 jsessionid cookie,就根据这个东西,在服务端可以维护一个对应的 session 域,里面可以放点数据。 一般的话只要你没关掉浏览器,cookie 还在,那么对应的那个 session 就在,但是如果 cookie 没了,session 也就没了。常见于什么购物车之类的东西,还有登录状态保存之类的。 这个不多说了,懂 Java 的都该知道这个。 单块系统的时候这么玩儿 session 没问题,但是你要是分布式系统呢,那么多的服务,session 状态在哪儿维护啊? 其实方法很多,但是常见常用的是以下几种: 完全不用 session 使用 JWT Token 储存用户身份,然后再从数据库或者 cache 中获取其他的信息。这样无论请求分配到哪个服务器都无所谓。 tomcat +

Heartbeat基础知识

拈花ヽ惹草 提交于 2020-02-25 22:16:37
在日常的集群系统架构中,一般用到Heartbeat的主要就2种: 1)高可用(High Availability)HA集群, 使用Heartbeat实现,也称为”双机热备”, “双机互备”, “双机”; 2)负载均衡群集(Load Balance Cluster),使用Linux Virtual Server(LVS)实现; Heartbeat 的介绍 Heartbeat是Linux-HA项目中的一个组件,它实现了一个高可用集群系统。 心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat项目里,由heartbeat模块实现了这两个功能 。Heartbeat是目前开源HA项目中十分成功的一个例子,它提供了所有 HA 软件所需要的基本功能,比如 心跳检测和资源接管、监测群集中的系统服务、在群集中的节点间转移共享 IP 地址的所有者 等,自1999年开始到现在,Heartbeat在行业内得到了广泛的应用。heartbeat最核心的功能包括两个部分,心跳监测和资源接管。心跳监测可以通过网络链路和串口进行,而且支持冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。 Hearbeat和Keepalived区别 1)

Kubernetes(K8s)入门到实践(一)----Kubernetes入门

a 夏天 提交于 2020-02-24 23:03:32
前言 作为一名网络工程的大学生,在前段时间学习了云计算和大数据的相关技术后,我迫切的想要获得更多的自动化持续交互的相关技术。目前非常火热的Kubernetes技术简称(K8s)是由谷歌开源的Docker容器集群管理系统,功能非常强大,也激起了我浓厚的学习兴趣。 以后我会将这一系列关于Kubernetes的技术文章和学习心得一并分享出来,供大家一块学习和交流。 1. Kubernetes是什么 首先, 我们在学习Kubernetes之前一定要先了解一下什么是Kubernetes。 第一,它是一个全新的基于容器技术的分布式架构领先方案,并且是由谷歌保密十几年之久的秘密武器-Borg的一个开源版本。 Borg是谷歌的一个久负盛名的内部使用的大规模集群管理系统,它基于容器技术,目的是实现资源管理的自 动化,以及跨多个数据中心的资源利用率的最大化。 然后,Kubernetes是一个开放的开发平台。与J2EE不同,它不局限于 任何一种语言 ,没有限定任何编程接口,所以不论是用Java、Go、C++还是用Python编写的服务,都可以被映射为Kubernetes的Service(服务),并通过标准的TCP通信协议进行交互。 此外,Kubernetes平台对现有的编程语言、编程框架、中间件没有任何侵入性,因此现有的系统也很容易改造升级并迁移到Kubernetes平台上。 最后

Redis 集群以及应用

那年仲夏 提交于 2020-02-24 04:25:54
相关阅读: 史上最全Redis高可用技术解决方案大全 Raft协议实战之Redis Sentinel的选举Leader源码解析 目录: Redis 集群以及应用 集群 主从复制 主从链(拓扑结构) 复制模式 问题点 哨兵机制 拓扑图 节点下线 Leader选举 故障转移 读写分离 定时任务 分布式集群(Cluster) 拓扑图 通讯 集中式 Gossip 寻址分片 hash取模 一致性hash hash槽 使用场景 热点数据 会话维持 Session 分布式锁 SETNX 表缓存 消息队列 list 计数器 string 缓存设计 更新策略 更新一致性 缓存粒度 缓存穿透 解决方案 缓存雪崩 出现后应对 请求过程 Redis 集群以及应用 集群 主从复制 主从链(拓扑结构) 复制模式 全量复制:Master 全部同步到 Slave 部分复制:Slave 数据丢失进行备份 问题点 同步故障 复制数据延迟(不一致) 读取过期数据(Slave 不能删除数据) 从节点故障 主节点故障 配置不一致 maxmemory 不一致:丢失数据 优化参数不一致:内存不一致. 避免全量复制 选择小主节点(分片)、低峰期间操作. 如果节点运行 id 不匹配(如主节点重启、运行 id 发送变化),此时要执行全量复制,应该配合哨兵和集群解决. 主从复制挤压缓冲区不足产生的问题(网络中断,部分复制无法满足)

企业级负载均衡集群LVS—四种模式的工作原理

↘锁芯ラ 提交于 2020-02-24 03:29:44
企业级负载均衡集群LVS—四种模式的工作原理 1. DR模式 2. TUN模式 3. NAT模式 4. full-nat模式 1. DR模式 Virtual Server via Direct Routing(VS-DR):用直接路由技术实现虚拟服务器。当参与集群的计算机和作为控制管理的计算机在同一个网段时可以用此方法,控制管理的计算机接收到请求包时直接送到参与集群的节点。直接路由模式比较特别,很难说和什么方面相似,前种模式基本上都是工作在网络层上(三层),而直接路由模式则应该是工作在数据链路层上(二层)。 工作原理 : 如上图所示,Director和REAL SERVER都配置同一个IP(VIP),Director将该IP配置到对外的网卡上,Real server将该IP配置到lo网卡上。配置arp_ignore为1(目的是让数据包发出apr请求时,只有Director会响应该arp请求),所有REAL SERVER对本身这个IP的ARP请求保持静默。而Director收到数据包后根据调度算法,找出对应的 REAL SERVER,把目的MAC地址改为REAL SERVER的MAC并发给这台REAL SERVER。这时REAL SERVER通过网卡eth0收到这个数据包,由于Real Server上的lo网卡配置的也有VIP,所以RS接收该数据包。处理后直接返回给客户端

redis笔记

你说的曾经没有我的故事 提交于 2020-02-23 03:30:49
Redis是开源的免费的高效的以键值对类型的 NoSQL数据库; Redis自身优势: 1.支持的数据类型丰富; 2.因为使用的是内存,读写速度快; 3.原子性,redis中的操作都是单线程,但后期可能会出多线程; 4高可用,redis主从模式,哨兵,集群 5.可设置过期时间,消息订阅等 Redis支持的数据类型: String(字符串)、List(列表)、Set(无序去重集合)、Sorted Set(有序去重集合)、hash(哈希) Redis数据淘汰策略: noeviction 不允许淘汰数据,内存满返回错误信息; allkeys-lru 在所有数据列表中挑选调用最少的数据淘汰; volatile-lru 在已经过期的数据列表中淘汰使用最少的数据; allkeys-random 在所有数据列表中随机淘汰数据 volatile-random 在已经过期的数据列表中随机淘汰数据 volatile-ttl 在已经过期的数据列表中优先淘汰回收存活时间较短的数据; Redis的value值最大存储1个G, String类型最大存储512GB; Redis为了达到最快的读写速度,将数据都写入内存中,在通过异步的方式将数据持久化到磁盘中;这是Redis的优势; Redis的持久化方案: (默认)RDB AOF RDB: 是定期将数据快照保存在一个rbd文件中

早上好,我是 Istio 1.1

前提是你 提交于 2020-02-21 03:38:54
1 性能增强 虽然Istio1.0的目标是生产可用,但从去年7月份发布以来,在性能和稳定性上并不能让用户满意。社区的Performance and Scalability工作组在Istio v1.1中做了大量的努力以提高控制面和数据面的性能,其中最明显的性能增强包括: Sidecar API,减少发给proxy的配置数量以及pilot负载。 网络配置规则(Destinationrule,Virtualservie, ServiceEntry)中增加的 exportTo字段限制配置的可见范围。 Envoy默认收集的统计数据大量减少。 给mixer增加load-shedding功能,防止overload。 提升envoy和mixer之间的交互协议。 可配置并发线程数,提高吞吐量。 可配置filter来约束mixer遥测数据。 从对Istio 1.1的测试数据来看,这部分工作取得了显著的效果。 1.1控制面性能表现 Pilot的CPU和内存使用受网格内的配置和系统状态的影响,例如负载变化速率,配置变化速率,连接到Pilot的proxy的数量等。可以通过增加Pilot的实例数来减少配置分发处理的时间,提高性能。 在网格内有1000个服务,2000 个sidecars,每秒1000请求下的表现: 单Pilot 实例使用 1 vCPU 和1.5 GB 的内存。 istio

redis面试题

我的梦境 提交于 2020-02-20 17:53:56
文章正文 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性能问题和解决方案: 10、redis 过期键的删除策略? 11、Redis 的回收策略(淘汰策略)? 12、为什么 edis 需要把所有数据放到内存中? 13、Redis 的同步机制了解么? 14、Pipeline 有什么好处,为什么要用 pipeline? 15、是否使用过 Redis 集群,集群的原理是什么? 16、Redis 集群方案什么情况下会导致整个集群不可用? 17、Redis 支持的 Java 客户端都有哪些?官方推荐用哪个? 18、Jedis 与 Redisson 对比有什么优缺点? 19、Redis 如何设置密码及验证密码? 20、说说 Redis 哈希槽的概念? 21、Redis 集群的主从复制模型是怎样的? 22、Redis 集群会有写操作丢失吗?为什么? 23、Redis 集群之间是如何复制的? 24、Redis 集群最大节点个数是多少? 25、Redis 集群如何选择数据库? 26、怎么测试

服务器集群

血红的双手。 提交于 2020-02-19 14:49:57
集群,英文名称为Cluster,通俗地说,集群是这样一种技术:它至少将两个系统连接到一起,使两台服务器能够像一台机器那样工作或者看起来好像一台机器。采用集群系统通常是为了提高系统的稳定性和网络中心的数据处理能力及服务能力。 举个例子来说,我们架设了一台WWW服务器,上面构建了一个电子商务网站,然而随着时间的推移,名声越来越大,这时点击率也就越来越高,WWW服务器的负载也就越来越高。这种情况下,我们就必须提升WWW服务器的能力,以满足以益增长的服务请求。这时,我们就面临两种选择: 1)升级WWW服务器,采用更快的CPU,增加更多的内存,使其具有更强的性能;但日益增长的服务请求又会使服务器再次过载,需要再次升级,这样就陷入了升级的怪圈。还有,升级时还得考虑到服务如何接续,能否中止! 2)增加WWW服务器,让多台服务器来完成相同的服务。 第二种方法就是服务器集群,简而言之,就是一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理。此单一系统为客户工作站提供高可靠性的服务。一个服务器集群包含多台拥有共享数据存储空间的服务器,各服务器之间通过内部局域网进行相互通信;当其中一台服务器发生故障时,它所运行的应用程序将由其他的服务器自动接管;在大多数情况下,集群中所有的计算机都拥有一个共同的名称,集群系统内任意一台服务器都可被所有的网络用户所使用

集群服务器

一个人想着一个人 提交于 2020-02-19 14:49:19
集群, 英文 名称为Cluster, 通俗 地说,集群是这样一种 技术 :它将多个系统连接到一起,使多台服务器能够像一台机器那样工作或者看起来好像一台机器。采用集群系统通常是为了提高系统的稳定性和网络中心的数据处理能力及服务能力。   举个例子来说,我们架设了一台WWW服务器,上面构建了一个电子商务网站,然而随着时间的推移,名声越来越大,这时点击率也就越来越高,WWW服务器的负载也就越来越高。这种情况下,我们就必须 提升 WWW服务器的能力,以满足以益增长的服务请求。这时,我们就面临两种选择:   1)升级WWW服务器,采用更快的CPU,增加更多的内存,使其具有更强的性能;但日益增长的服务请求又会使服务器再次过载,需要再次升级,这样就陷入了升级的怪圈。还有,升级时还得考虑到服务如何接续,能否中止!   2)增加WWW服务器,让多台服务器来完成相同的服务。   第二种方法就是服务器集群,简而言之,就是一组相互独立的服务器在网络中表现为单一的系统,并 以单一系统的模式加以管理。此单一系统为客户工作站提供高可靠性的服务。一个服务器集群包含多台拥有共享数据存储空间的服务器,各服务器之间通过内部局域 网进行相互通信;当其中一台服务器发生故障时,它所运行的应用程序将由其他的服务器自动接管;在大多数情况下,集群中所有的计算机都拥有一个共同的名称,