节点服务器

聊一聊字节跳动的面试

烂漫一生 提交于 2020-01-01 20:26:37
作者:草木青川 链接:https://zhuanlan.zhihu.com/p/82871762 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 lc里最长上升子序列的变形题。实现输入英文单词联想的功能二面:矩阵旋转,要求空间复杂度O(1)无序的数组的中位数。要求时间复杂度尽可能的小计算机网络tcp 怎么保证数据包有序1. 主机每次发送数据时,TCP就给每个数据包分配一个序列号并且在一个特定的时间内等待接收主机对分配的这个序列号进行确认,2. 如果发送主机在一个特定时间内没有收到接收主机的确认,则发送主机会重传此数据包。3. 接收主机利用序列号对接收的数据进行确认,以便检测对方发送的数据是否有丢失或者乱序等,4. 接收主机一旦收到已经顺序化的数据,它就将这些数据按正确的顺序重组成数据流并传递到高层进行处理。tcp 和 udp 的异同TCP是面向流的可靠数据传输连接UDP是面向数据包的不可靠无连接tcp 怎么保证可靠性差错检验机制,反馈机制,重传机制,引入序号,滑动窗口协议,选择重传tcp 中 拥塞避免 和 流量控制 机制拥塞避免和流量控制这两种机制很像,但是流量控制是由接收方的接受能力也就是接收窗口所决定的,如果接收窗口够大,以动态调整发送窗口的大小调整发送速度拥塞避免主要由网络情况所限制,网络情况良好,则加大发送速率,网络状态差(冗余ACK和丢包

高并发IM系统架构优化实践

蹲街弑〆低调 提交于 2020-01-01 18:54:20
互联网+时代,消息量级的大幅上升,消息形式的多元化,给即时通讯云服务平台带来了非常大的挑战。高并发的IM系统背后究竟有着什么样的架构和特性 本文要点: 网易云信 整体架构解析 云信中的客户端连接和接入点管理 服务化和高可用 网易 IM 云分层架构图解析 底层客户端 SDK ,覆盖了安卓,iOS,windows PC桌面端,web网页端和嵌入式设备等多个平台。在SDK层使用的网络协议有4层的TCP协议和基于7层的Socket.IO协议,后者专门用于Web SDK中提供长连接能力;除了集成到应用App中的SDK之外,还提供了供第三方服务器调用的API接口,基于Http协议;最后的A/V SDK是基于UDP协议的实时音视频SDK,用于实现基于网络的语音和视频通话。 网关层:提供客户端直接接入并维护与服务器之间的长连接;其中WebSDK直连的是Weblink服务,这是一个基于Socket.IO协议实现的长连接服务,而供AOS/IOS/PC等客户端SDK直连的是基于TCP协议的Link服务;在Link和WebLink服务中承担的一个非常重要的功能就是所有客户端长连接的管理,后面基于HTTP协议上的网关有API服务,和LBS服务等,其中LBS服务用于帮助客户端SDK选取最合适自己的网关接入点,优化网络效率;而API服务则直接提供来自第三方服务器的业务请求; HA层:在网关接入层之上是HA层

知识图谱可视化

隐身守侯 提交于 2020-01-01 07:30:29
代码地址如下: http://www.demodashi.com/demo/13181.html 人物关系知识图谱 一、背景 将结构化数据通过关系预处理程序处理为图数据库可以查询的数据,示例是将其中一部分(人物关系数据)可视化表示。 二、用到的技术 技术点:图数据库Neo4j,d3.js,java,css,spring boot 开发工具:IDEA专业版(可找学生账号注册免费使用一年,社区版不支持WEB开发) 三、项目结构以及代码实现过程 实现思路这样: 1,先定义基础的展示页面index.html 2、完成画图js(graph.js) 3,提供一个基础的拿数据接口加载测试绘图数据和绘图需要的数据(例如节点选中之后的小图标加载) 4、页面从数据接口请求数据之后,调用绘图JS在页面完成画图操作(请求数据的接口可以很方便的改为从图数据库拿取数据进行展示) 主要文件目录说明: 1、data目录 bg.jpg可视化背景图片数据 CircularPartition.json节点圆形分区图工具栏需要加载的数据 test.json可视化需要展示的数据格式 2、images 此目录存储节点属性图片数据 3、js d3.js version-3.2.8 4、src JS以及其它HTML等源码 5、index.html 知识图谱可视化入口文件 6、拿数据接口 通过数据Type

mariadb/mysql高可用读写分离

家住魔仙堡 提交于 2020-01-01 01:29:25
第一步mariadb主从配置 第二步ProxySql读写分离 第三步keepalived高可用proxysql 第四步测试mysql读写分离高可用是否成功 第一步mariadb主从配置: 首先配置好mariadb主从同步,这里采用的一主两从,node1和node2为半同步复制,node1和node3为异步复制,也可以全部采用异步复制,根据业务需求配置即可 保证各服务器节点时间同步,可参考 时间同步设置方案 http://www.longma.tk/p=629 初始化环境 node1和 node2 ,为保证不受其它实验干扰,建议恢复至初始状态,新装的mariadb即可,不要有其它实验项目干扰 主服务器node1配置: 1 2 3 4 5 6 7 8 9 10 11 配置文件 vim / etc / my .cnf .d / server .cnf [ mysqld ] skip_name_resolve = ON innodb_file_per_table = ON server_id = 1 log_bin = mysql - bin systemctl start mariadb .service mysql > GRANT REPLICATION SLAVE , REPLICATION CLIENT ON * . * TO 'repluser' @ '172.18.43.%'

这可能是全网讲得最清楚的 ZooKeeper 概念文章了

爷,独闯天下 提交于 2019-12-31 23:22:34
前言 相信大家对 ZooKeeper 应该不算陌生。但是你真的了解 ZooKeeper 是个什么东西吗?如果别人/面试官让你给他讲讲 ZooKeeper 是个什么东西,你能回答到什么地步呢? 我本人曾经使用过 ZooKeeper 作为 Dubbo 的注册中心,另外在搭建 solr 集群的时候,我使用到了 ZooKeeper 作为 solr 集群的管理工具。前几天,总结项目经验的时候,我突然问自己 ZooKeeper 到底是个什么东西?想了半天,脑海中只是简单的能浮现出几句话:“①Zookeeper 可以被用作注册中心。 ②Zookeeper 是 Hadoop 生态系统的一员;③构建 Zookeeper 集群的时候,使用的服务器最好是奇数台。” 可见,我对于 Zookeeper 的理解仅仅是停留在了表面。 所以, 通过本文,希望带大家稍微详细的了解一下 ZooKeeper 。如果没有学过 ZooKeeper ,那么本文将会是你进入 ZooKeeper 大门的垫脚砖。如果你已经接触过 ZooKeeper ,那么本文将带你回顾一下 ZooKeeper 的一些基础概念。 最后, 本文只涉及 ZooKeeper 的一些概念,并不涉及 ZooKeeper 的使用以及 ZooKeeper 集群的搭建。 网上有介绍 ZooKeeper 的使用以及搭建 ZooKeeper 集群的文章

使用Apache Mesos和Consul实现服务的注册发现

只谈情不闲聊 提交于 2019-12-29 01:43:33
为保证基于Docker应用程序和服务都具有高性能和可用性,设计出一种具有服务发现,高可用性和容错能力的解决方案非常重要。   我们使用 Apache Mesos 和 Mesosphere的 Marathon实现Docker的任务调度和应用部署,Mesos能够帮助完成高可用性 高容错性。   作为服务编排注册和发现, Consul 不仅能够作为一个key/value存储,而且能够支持错误侦测以及多数据中心支持。   注册定义是当有Docker容器启动或停止时,其他Docker容器应该能获知,使用 Apache Consul 实现注册或注销Docker容器的微服务名称以及发布端口。 Consul-template 是一个独立的应用,能够查询Consul并且更新文件系统上的一个文件模板,正如你看到一样,使用Consul/Consul-template实现注册的捆绑能够帮助完成动态服务的注册和发现,以及配置文件的更新,我们可以使用这些工具与Haproxy联合一起为所有服务请求提供一个通用的代理网关。 安装步骤   假设 Consul为3个或5个服务器集群工作,每个服务器节点包括所有mesos 主从服务器和haproxy等都必须有一个Consul代理网关安装和运行。   安装Consul 服务器和代理节点的步骤: wget https://dl.bintray.com/mitchellh

zookeeper(16)源码分析-ZAB协议

▼魔方 西西 提交于 2019-12-29 00:11:11
Zookeeper使用了Zookeeper Atomic Broadcast(ZAB,Zookeeper原子消息广播协议)的协议作为其数据一致性的核心算法。ZAB协议是为Zookeeper专门设计的一种支持崩溃恢复的原子广播协议。 ZAB理论 ZAB协议的核心是定义了对于那些会改变Zookeeper服务器数据状态的事务请求的处理方式,即: 所有事务请求必须由一个全局唯一的服务器来协调处理 ,这样的服务器被称为Leader服务器,余下的服务器则称为Follower服务器,Leader服务器负责将一个客户端事务请求转化成一个事务Proposal(提议),并将该Proposal分发给集群中所有的Follower服务器,之后Leader服务器需要等待所有Follower服务器的反馈,一旦超过半数的Follower服务器进行了正确的反馈后,那么Leader就会再次向所有的Follower服务器分发Commit消息,要求其将前一个Proposal进行提交。 ZAB一些包括两种基本的模式: 崩溃恢复 和 消息广播 。 1、当整个服务框架启动过程中或Leader服务器出现网络中断、崩溃退出与重启等异常情况时,ZAB协议就会进入恢复模式并选举产生新的Leader服务器。当选举产生了新的Leader服务器,同时集群中已经有过半的机器与该Leader服务器完成了状态同步之后,ZAB协议就会退出恢复模式

keepalived之vrrp_script详解

放肆的年华 提交于 2019-12-27 01:27:53
1. Nginx负载均衡高可用   首先介绍一下Keepalived,它是一个高性能的服务器高可用或热备解决方案,Keepalived主要来防止服务器单点故障的发生问题,可以通过其与Nginx的配合实现web服务端的高可用。 Keepalived以VRRP协议为实现基础,用VRRP协议来实现高可用性(HA).VRRP (Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,VRRP协议将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器IP(一个或多个),如下图所示: 这张图的意思是,我们使用keepalived来管理两台设备的Nginx,并虚拟出一个IP,我们现在两台装有Nginx的设备分别是192.168.101.3和192.168.101.4,那么我们可以虚拟出一个192.168.156.xx的IP,外界请求直接访问虚拟IP而不是真正的Nginx,让虚拟IP去访问提供服务的Nginx(注意:高可用是指同一时间提供服务的只有一台设备,提供服务的设备挂掉之后,备份服务器便开始提供服务),然后再由Nginx去访问tomcat。 要实现nginx的高可用,需要实现 备份机 。 我们拿两台虚拟机来搭建nginx高可用环境,这两台设备分别是192.168.101.3(主机名是nginx1)和192.168.101.4

Nginx负载均衡高可用---架构

一曲冷凌霜 提交于 2019-12-27 01:26:16
1. Nginx负载均衡高可用 首先介绍一下Keepalived,它是一个高性能的服务器高可用或热备解决方案,Keepalived主要来防止服务器单点故障的发生问题,可以通过其与Nginx的配合实现web服务端的高可用。 Keepalived以VRRP协议为实现基础,用VRRP协议来实现高可用性(HA).VRRP (Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,VRRP协议将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器IP(一个或多个),如下图所示: 这张图的意思是,我们使用keepalived来管理两台设备的Nginx,并虚拟出一个IP,我们现在两台装有Nginx的设备分别是192.168.101.3和192.168.101.4,那么我们可以虚拟出一个192.168.156.xx的IP,外界请求直接访问虚拟IP而不是真正的Nginx,让虚拟IP去访问提供服务的Nginx(注意:高可用是指同一时间提供服务的只有一台设备,提供服务的设备挂掉之后,备份服务器便开始提供服务),然后再由Nginx去访问tomcat。 要实现nginx的高可用,需要实现备份机。 我们拿两台虚拟机来搭建nginx高可用环境,这两台设备分别是192.168.101.3(主机名是nginx1)和192.168.101.4(主机名是nginx2)。

Zookeeper集群搭建

南楼画角 提交于 2019-12-27 01:14:20
由于公司缓存方案改进,准备采用codis集群作为主要的缓存解决方案(codis:国内豌豆荚开发的redis集群解决方案,已开源,github地址:https://github.com/CodisLabs/codis),codis集群依赖于zookeeper集群,本文介绍zookeeper集群的实现。 一、Zookeeper原理简介 ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。 Zookeeper设计目的 最终一致性:client不论连接到那个Server,展示给它的都是同一个视图。 可靠性:具有简单、健壮、良好的性能、如果消息m被到一台服务器接收,那么消息m将被所有服务器接收。 实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。但由于网络延时等原因,Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。 等待无关(wait-free):慢的或者失效的client不得干预快速的client的请求,使得每个client都能有效的等待。 原子性:更新只能成功或者失败,没有中间状态。 顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息a在消息b前发布