
中间件分析
llianlianpay
快来吐槽
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1、为什么编程中建议使用netty而不是用jdk nio?
如果对nio了解比较透彻的话,就不会纠结这个问题了,毕竟市面上流行的中间件,如mycat ,spark都是用的nio,当然使用netty的更多,如dubbo;我们需要知道nio的原理,同时也不必乱造轮子。使用jdk-nio你需要掌握linux-selector原理,就是将所有的channel注册到一个selector上,selector通过轮询检测,判断这些channel是否是可用的,如 ...原创 2018-03-30 01:21:50 · 5808 阅读 · 0 评论 -
21、聊聊akka(一)使用及集群调用(负载)
问到:akka的线程模型 为actor模型,那actor模型具体是怎么样的呢? 一种类似于协程的事件(消息)驱动?AKKA提供一种Actor并发模型,其粒度比线程小很多,这意味着你可以在项目中使用大量的Actor。 Akka提供了一套容错机制,允许在Actor出错时进行一些恢复或者重置操作 AKKA不仅可以在单击上构建高并发程序,也可以在网络中构建分布式程序,并提供位置透明的Act...原创 2018-04-16 00:24:27 · 3717 阅读 · 0 评论 -
22、聊聊akka(二)监控和监视
虽然通过充分利用多核CPU的计算能力把数据处理运算进行并行处理,提高系统整体效率,对现今大数据普遍盛行的系统计算要求还是远远不足的,只有通过硬件平行拓展(scale-out)形成机群并在之上实现分布式运算才能正真符合新环境对软件程序的要求。Akka程序是由多个Actor组成的。它的工作原理是把一项大运算分割成许多小任务然后把这些任务托付给多个Actor去运算。Actor不单可以在当前JVM中运...原创 2018-04-16 10:56:14 · 2088 阅读 · 0 评论 -
23、 聊聊akka(三) 集群&持久化
Akka集群支持去中心化的基于P2P的集群服务,没有单点故障(SPOF)问题,它主要是通过Gossip协议来实现。对于集群成员的状态,Akka提供了一种故障检测机制,能够自动发现出现故障而离开集群的成员节点,通过事件驱动的方式,将状态传播到整个集群的其它成员节点。集群概念 节点(node):集群中的逻辑成员。允许一台物理机上有多个节点。由元组hostname:port:uid唯一确...原创 2018-04-16 12:30:46 · 1002 阅读 · 0 评论 -
12、说说mysql
注意:存储引擎是基于表的,而不是数据库。 innoDB VS MyiSAM innoDB 支持行锁、事务、事务隔离、聚集数据 MyiSAM支持表锁,非聚集数据show engines ;use mysql ;show tables ;select * from user; show variables like 'innodb_version' ;连接方式 TCP/...原创 2018-04-04 00:21:35 · 196 阅读 · 0 评论 -
13、docker的使用(2/5)mysql & MongoDB & Redis
安装dockeryum -y install docker镜像加速vi /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows){"registry-mirrors": ["http://*******.m.daocloud.io","http://hub-mi...原创 2018-04-05 12:21:03 · 274 阅读 · 0 评论 -
14、分库分表的实现
package sharding.sql |-annotation |-Select |-Insert |-Update |-Delete |-connect |-DB |-DB.Connection |-dao |-UserDao |-DaoPr...原创 2018-04-05 14:03:26 · 240 阅读 · 0 评论 -
18、聊聊redis(一)
Redis 内置了复制(Replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(Transactions) 和不同级别的磁盘持久化(Persistence),并通过 Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性(High Availability)。redis的内存模型与Memcached仅支持简...原创 2018-04-12 22:46:06 · 269 阅读 · 0 评论 -
19、聊聊redis(二)
集群Redis 集群是一组能进行数据共享的Redis 实例(服务或者节点)的设施,集群可以使用的功能是普通单机 Redis 所能使用的功能的一个子集;Redis 集群通常具有高可用、可扩展性、分布式、容错等特性。了解redis的集群后,这些晦涩的概念可结合redis的主从、集群分区和集群运维等角度理解体会。槽(slot)的基本概念从上面集群的简单操作中,我们已经知道redis存取k...原创 2018-04-13 01:46:55 · 274 阅读 · 0 评论 -
20、谈谈consul(一)
consul的基本概念组成 consul 集群的每个成员上都要运行一个 agent,可以通过 consul agent 命令来启动。agent 可以运行在 server 状态或者 client 状态。自然的,运行在 server 状态的节点被称为 server 节点;运行在 client 状态的节点被称为 client 节点。client 节点 负责转发所有的 RPC 到 server ...原创 2018-04-13 11:08:19 · 943 阅读 · 0 评论 -
24、 Kubernetes(一)单机启动及概念描述
1、在kubernetes里,一个pod能和其他机器上的pod进行通信,因为kubernetes采用了二级虚拟网络。 2、如果pod里面的业务容器down了,kubernetes会重启这个pod 3、如果node宕了,kubernetes会将node上的所有pod转移到其他node上kindkind是用来定义资源文件的类型,一般为ReplicationController,Serv...原创 2018-04-19 22:05:38 · 411 阅读 · 0 评论 -
18、分布式全局id实践(1/4)
1、利用mongodb的id MongoDB的ObjectId和snowflake算法类似。它设计成轻量型的,不同的机器都能用全局唯一的同种方法方便地生成它。MongoDB 从一开始就设计用来作为分布式数据库,处理多个节点是一个核心要求。使其在分片环境中要容易生成得多。 前4 个字节是从标准纪元开始的时间戳,单位为秒。时间戳,与随后的5 个字节组合起来,提供了秒级别的唯一性。由于时间戳在前...原创 2018-04-10 01:53:16 · 216 阅读 · 0 评论 -
17、mongoDB的使用(1/7)
MongoDB 复制MongoDB复制是将数据同步在多个服务器的过程。 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。MongoDB复制原理mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。 mongodb各个节点常见的搭配方式为:一主一从、一主多从。 ...原创 2018-04-09 23:59:49 · 273 阅读 · 0 评论 -
10、如何解决分布式事务?
根据cap理论,分布式事务 acid 是很难保证的。一般做法是牺牲一致性,满足可用性和分区容错。 分布式事务可以基于 mq/rpc 实现最终一致性,但在分库分表,立即可见的应用上是不能满足业务需求的,故分布式事务还是有必要完善的。BASE理论 在分布式系统中,我们往往追求的是可用性,它的重要程序比一致性要高,那么如何实现高可用性呢? 前人已经给我们提出来了另外一个理论,就是BASE理论,...原创 2018-04-02 13:12:57 · 4000 阅读 · 0 评论 -
2、mysql中的索引和树结构
二叉树 Binary Search Tree BST二叉树是一种特殊的树结构,普通树若不转化成二叉树,则运算很难实现。 基本特点: 结点的度小于等于2 有序树(子树有序,不能颠倒) 满二叉树:一棵深度为k且有2k-1个结点的二叉树。(意思是树上挂满了结点) 完全二叉树:只有最后一层叶...原创 2018-03-30 22:40:58 · 478 阅读 · 0 评论 -
3、zookeeper FastLeader选举
配置为多个实例共同构成一个集群对外提供服务。其每一个实例本地都存有冗余数据,每一个实例都可以直接对外提供读写服务。在这个集群中为了保证数据的一致性,需要有一个Leader来协调一些事务。那么问题来了:如何确定哪一个实例是Leader呢?问题的难点在于: 没有一个仲裁者来选定Leader。 &n...原创 2018-03-31 00:52:51 · 423 阅读 · 0 评论 -
16、kernel devel 安装与卸载
1、查看已安装kernel-develuname -a ; rpm -qa kernel\* | sort2、查看系统内核uname -r3、下载对应的rpmwget xxx/kernel-devel-3.10.0-514.el7.x86_64.rpm4、卸载已安装的内核yum remove kernel-headers-3.10.0-693.21.1.e...原创 2018-04-08 15:14:50 · 9470 阅读 · 1 评论 -
4、kafka:如何做到1秒发布百万级条消息
RandomAccessFile、FileInputStream和FileOutputStream的区别 Java中的RandomAccessFile提供了对文件的读写功能。RandomAccessFile 虽然属于java.io下的类,但它不是InputStream或者OutputStream的子类;它也不同于FileInputStrea...原创 2018-03-31 12:23:56 · 1452 阅读 · 0 评论 -
5、redis集群与hash一致性
为什么集群?通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取。Redis是一个很好的Cache工具。大型网站应用,热点数据量往往巨大,几十G上百G是很正常的事儿,在这种情况下,如何正确架构Redis呢?首先,无论我们是使用自己的物理主机,还是使用云服务主机,内存资源往往是有限制的,scale up不是一个好办法,我们需要scale out横向可伸缩扩展,这需要...原创 2018-03-31 13:09:04 · 14275 阅读 · 1 评论 -
6、分库分表中间选择
1、mycat 2、sharding-jdbc 解决问题 1、读写分离 使用mysql的master/slave可解决2、双主复制3、负债均衡 LVS+keepalived组合实现、haproxy+keepalived组合实现4、垂直分库 将表按照功能模块、关系密切程度划分出来,部署到不同的库上5、水平分表 将一张表按照某种规则存储到多个结构相同的表,和不同的...原创 2018-03-31 13:24:04 · 325 阅读 · 0 评论 -
7、何时进行服务熔断、服务降级、服务限流?
伴随着微服务架构被宣传得如火如荼,一些概念也被推到了我们面前(管你接受不接受),其实大多数概念以前就有,但很少被提的这么频繁(现在好像不提及都不好意思交流了)。想起有人总结的一句话,微服务架构的特点就是:“一解释就懂,一问就不知,一讨论就吵架”。服务熔断在介绍熔断机制之前,我们需要了解微服务的雪崩效应。在微服务架构中,微服务是完成一个单一的业务功能,这样做的好处是可以做到解耦,每个微服...原创 2018-03-31 14:17:43 · 50322 阅读 · 9 评论 -
8、如何保证mq的处理能力
几点思路: 1、消费端监控队列长度,如果达到阈值,可以先pull数据入库,再进行异步处理。 2、处理线程池化 3、消息转发如果是顺序消息,可能就不能适应了。...原创 2018-03-31 14:40:44 · 344 阅读 · 0 评论 -
9、WebSocket是什么?
WebSocketWebSocket用于在Web浏览器和服务器之间进行任意的双向数据传输的一种技术。WebSocket协议基于TCP协议实现,包含初始的握手过程,以及后续的多次数据帧双向传输过程。其目的是在WebSocket应用和WebSocket服务器进行频繁双向通信时,可以使服务器避免打开多个HTTP连接进行工作来节约资源,提高了工作效率和资源利用率。WebSocket 是独立的、创建...原创 2018-04-01 15:26:55 · 1005 阅读 · 0 评论 -
25、etcd(1/5)
etcd 是 CoreOS 团队发起的一个管理配置信息和服务发现(service discovery)的项目。github.com/coreos/etcd 受到 Apache ZooKeeper 项目和 doozer 项目的启发,etcd 在设计的时候重点考虑了下面四个要素: 简单:支持 REST 风格的 HTTP+JSON API 安全:支持 HTTPS 方式的访问 ...原创 2018-04-21 21:36:21 · 242 阅读 · 0 评论