Kafka |

Kafka 消息幂等以及事务原理

Kafka实习过程中接触到了 Kafka 分布式消息队列,对这个消息队列也查了很多资料,了解到 Kafka 之所以支持很高QPS的原因以及内部实现原理,但是今天不聊这个,主要来了解一下 Kafka 幂等性以及事务,主要从 Kafka 的幂等性、事务性以及 Kafka Exactly Once 语义的实现这几个方面进行总结。 Kafka Producer 幂等性Kafka Producer 幂等性主要是规定无论 Producer 提交多少次消息,一条消息只会被持久化一次,不会出 ...

Creams
Creams
17 min read
分布式 |

分布式一致性算法-Paxos算法

Paxos 算法Paxos 作为一个重要的分布式一致性算法,是 Leslie Lamport 于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法,也是目前公认的解决分布式一致性问题最有效的算法之一。 自 Paxos 问世以来就持续垄断了分布式一致性算法,Paxos 这个名词几乎等同于分布式一致性。Google 的很多大型分布式系统都采用了 Paxos 算法来解决分布式一致性问题,如 Chubby 、Megastore 以及 Spanner 等。开源的ZooKee ...

Creams
Creams
6 min read
|

常见的负载均衡策略

负载均衡器负载均衡器就是实现一种或者多种负载均衡算法的软件或者硬件设备。负载均衡器根据协议层的不同,通常又分为两种,第一种在四层传输层实现,第二种就是在七层应用层实现。很多专用的硬件负载均衡器都支持在TCP层实现负载均衡,效率高。当然TCP层实现负载均衡有它的缺点,如无法保存长连接等。所以一般类似于BAT这种大公司,都是多层负载均衡配合的。一般纯软件实现的通常在应用层来实现,这也是应用比较多的一种实现方式。目前比较流行的实现有Nginx、HAProxy、Keepalived等 ...

Creams
Creams
2 min read
Java |

Java的代理模式

代理模式在设计模式中有一种叫代理模式的设计模式,将原对象封装到一个代理对象中,通过代理对象访问原对象,这样可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能(比如方法的前置或后置操作)。 静态代理这种代理方式需要代理对象和目标对象实现一样的接口。在编译前完成对代理类的编写,将原对象封装至代理对象中,对原方法进行增强 优点: 可以在不修改目标对象的前提下扩展目标对象的功能。 缺点: 冗余。由于代理对象要实现与目标对象一致的接口,会产生过多的代理类。 不 ...

Creams
Creams
11 min read
计算机网络 |

关于网络的常见面试问题

TCP与UDP的区别OSI和TCP/IP模型在传输层定义了两种传输协议:TCP(传输控制协议)和 UDP(用户数据报协议)。它们的主要区别如下: 面向连接与无连接(面向报文)TCP保证数据可靠性,错误重发;UDP不可靠,可能丢包TCP保证数据顺序,UDP不保证TCP主要提供完整性服务,UDP主要提供及时性服务 访问一个网页的全过程 客户端用户从浏览器输入www.google.com网站网址后回车,系统会查询本地hosts文件及DNS缓存信息,查找是否存在网址对应的IP解析记录 ...

Creams
Creams
9 min read
design pattern |

从 Spring-Framework 看 design pattern

从 Spring-Framework 看 design patternSpring 的源代码可以说是一个很有学习价值的代码库,通过学习了一段时间的IoC和MVC代码,不仅对它们的流程有了进一步的了解,还学习多种设计模式,这次对Spring中涉及的设计模式进行总结。 Spring中涉及的设计模式有: 工厂方法 (Factory Method) 单例模式(Singleton) 原型模式 (Prototype) 适配器(Adapter) 包装器(Decorator) 代理(Pro ...

Creams
Creams
42 min read
MySQL |

MySQL explain字段分析

MySQL EXPLAIN在编写SQL语句的时候,并不是只要能够返回数据就解决问题了,还要针对SQL执行时间对语句进行优化。如果执行速度过慢,此时就需要EXPLAIN命令来查看一个SQL的执行计划,该语句有没有用上索引,涉及行数,有没有全表查询,还可以获得很多可能被优化器考虑到的访问策略的细节。 1234567891011121314mysql> EXPLAIN SELECT major.id, major.name as majorName, stu_class-&g ...

Creams
Creams
6 min read
MyBatis |

MyBatis缓存机制

MyBatis缓存机制MyBatis是一个功能强大并且非常轻量的ORM框架,其中缓存机制也是其一大特性。MyBatis的缓存分为一级缓存与二级缓存。Mybatis的一级缓存,指的是SqlSession级别的缓存,默认开启;Mybatis的二级缓存,指的是SqlSessionFactory级别的缓存,需要配置。缓存是针对select来说的。 一级缓存在应用执行过程中,有可能在一个session中运行多次相同的SQL,如果一直访问数据库则会有很大开销,MyBatis提供了一级缓存 ...

Creams
Creams
7 min read