架构师修炼之道

知识日新月异,唯有保持同步迭代,才能适应变化的未来!

0%

配置推荐

重要配置项说明

  1. zookeeper.connect:必配参数,建议在kafka集群的每台机器都配置所有zk。
  2. broker.id:必配参数。集群节点的标示符,不得重复,取值范围0~n。
  3. log.dirs:不要使用默认的“/tmp/kafka-logs”
  4. advertised.host.name(默认为“host.name”):注册到zk供用户使用的主机名,内网环境通常无需配置,而IaaS一般需要配置为公网地址。
  5. advertised.port:注册到zk供用户使用的服务端口,通常在IaaS环境需要额外配置。
  6. num.partitions(默认是1):创建topic时的默认partition数量
  7. default.replication.factor:自动创建topic的默认副本数量,官方建议修改为2。
  8. min.insync.replicasISR:提交生成者请求的最小副本数
  9. unclean.leader.election.enable(默认允许):是否允许不具备ISR资格的replicas被选举为leader,作为不得已的措施,甚至不惜牺牲部分数据。
  10. controlled.shutdown.enable:在kafka收到stop命令或者异常终止时,允许自动同步数据,建议开启。
    阅读全文 »

介绍

  • 多模块项目由管理一组子模块的聚合器 POM 来构建。在大多数情况下聚合器位于项目的根目录中,并且必须是 pom 类型的项目。
  • 子模块是常规的 Maven 项目,它们可以单独构建,也可以通过聚合器 POM 构建。
  • 通过聚合器 POM 构建项目时会一并构建下属的所有子模块。

多模块的优势

调什么

内存方面

  1. JVM需要的内存总大小
  2. 各块内存分配,新生代、老年代、存活区
  3. 选择合适的垃圾回收算法、控制GC停顿次数和时间
  4. 解决内存泄露的问题,辅助代码优化
  5. 内存热点:检查哪些对象在系统中数量最大,辅助代码优化

线程方面

  1. 死锁检查,辅助代码优化
  2. Dump线程详细信息:查看线程内部运行情况,查找竞争线程,辅助代码优化
  3. CPU热点:检查系统哪些方法占用的大量CPU时间,辅助代码优化

如何调

  1. 监控JVM的状态,主要是内存、线程、代码、I/O几个部分
  2. 分析结果,判断是否需要优化
  3. 调整GC类型和内存分配;修改并优化代码
  4. 不断的重复分析和调整,直至找到优化的平衡点
阅读全文 »

背景

  • 在实际软件项目开发中,项目需要经过不同环境验证通过后才能上线,而每个环境都有不同的配置参数,如何管理这些不同环境的配置数据对于项目开发和部署均至关重要。
  • Apache Maven 中是可以实现这个需求的,接下来介绍具体的实施过程。
    阅读全文 »

当项目启动时若出现下面错误,可通过添加具体日志实现框架解决。

1
2
3
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

1 添加 Maven 依赖

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
阅读全文 »