创建和销毁对象
§ 考虑使用静态工厂方法代替构造函数
优点:
- 有名字,可以更确切描述返回对象的名称。
- 不用每次调用都创建一个新的对象,可以重复调用返回 相同实例。
- 可以返回原返回类型的任何子类型对象。
- 返回对象的类可以根据输入参数的不同而不同
- 便携包含该方法的类时,返回的对象的类不需要存在。
- 可以在创建参数化类型实例的时候,使代码更简洁。
ElasticSearch 从 6.8.0 和 7.1.0 开始,X-PACK
安全功能免费提供,首先确认版本是否支持。
开启 X-PACK
首先要生成 SSL 证书。
以 CentOS7 为例,如果采用 RPM 包安装,安装路径在 /usr/share/elasticsearch
,配置目录在 etc/elasticsearch
。
在其中一个节点上,执行:
1 | cd /etc/elasticsearch |
以上命令,会在 /etc/elasticsearch
生成两个文件:
elastic-certificates.p12
,elasticsearch.keystore
将两个文件同步到 ElasticSearch 所有节点,同时注意下 /etc/elasticsearch
目录的文件权限。
ElasticSearch X-PACK
自 6.3 之后默认安装的,之前是作为插件。
ElasticSearch 自 6.8.0 和 7.1.0 开始,X-PACK
的 安全功能 免费提供。借助 Kibana 可实现可视化用户、角色权限控制。而之前的版本,可以使用第三方插件 SearchGuard
来实现(很麻烦,并且可视化也是收费的),因此强烈建议升级。
ElasticSearch 7 开始,官方提供的下载包有 JDK 版本和 No JDK 版本,根据需要选择。
首先总结一下几个概念:Buffered IO、UnBuffered IO、DirectIO 分别是什么意思。
Buffeedr IO,主要是应用与文件系统之间的缓存。
UnBuffered IO,主要是应用与文件系统之间没有缓存,但是文件系统和操作系统是有 Page Cache 缓存的。
Direct IO,会绕过操作系统 Page Cache 页缓存(但还是会文件系统这一层)。这里有点复杂,借用下网上的图。
Linux IO 测试主要有:hdparam、dd、fio 几个工具。
在日常工作中,使用 Lombok 主要还是用于 Bean、POJO、DTO 一类,还是挺好用的。
建议使用 Lombok 1.18.xx 以上版本,支持 @SuperBuilder
注解,这也是 SpringBoot 2.1.X 开始采用的新版本。
Maven 中央仓库是由 Sonatype 维护的,提交流程比较尴尬,我们需要使用他的 JIRA 系统,通过提交 Issue 来进行发布流程。
Sonatype 地址是:https://issues.sonatype.org/secure/Dashboard.jspa
需要先注册一个账户,这个账户需要牢记,因为需要在接下来 Maven 的 setting.xml 中的配置,以及登陆 oss.sonatype 都要用到。
网上参考了很多资料,总结了大家推荐的一些中性笔选购指南:
三菱 UM-100, 5+块,经典,学生专用,会积墨。0.5mm,可换芯。假货重灾区
三菱 UM-151,8+块,不耐操,假货重灾区。
三菱 UB-150,7+块,直液,颜值高,UB-155,更商务
三菱 UB-200,10块,超级可靠,秘书领导专用签字笔,可作为书法 0.8mm 稍微偏粗。
百乐 BX-V5,7+块,直液,明星笔,颜值高,
百乐 BXC-V5,10+块,升级版,可换芯
本文主要介绍 CentOS8 服务器部署规范和一些初始化配置,整体套路延续 CentOS7 规范。
内核版本升级到 4.18+,使用 Docker 不需要再手动升级内核了。
1 | uname -a |
CentOS8 使用 DNF 作为软件源管理器,使用方法和 YUM 差不多,它来源于 Fedora。
目前仍可以同时使用 YUM。
network.service 已经不存在,使用 NetworkManager 或 nmcli 进行网络服务重启
1 | systemctl restart NetworkManager |
Kafka 的服务端由称为 Broker 的服务进程构成, 一个 Kafka 集群由多个 Broker 组成,Broker 负责接收和处理客户端发送过来的请求,以及对消息进行持久化。
推荐使用 Linux 部署 Kafka,得益于 epoll 的 IO 模型以及稳定的零拷贝技术。
因为 Kafka 实现机制多是顺序读写操作,普通机械硬盘可以胜任生产环境,虽然 Kafka 的分布式机制可以不用进行 RAID,但可以考虑使用 RAID,一方面提供磁盘级别的冗余(双保险),另一方面整体的读写吞吐量也会提升。另外尽量选用1T以内的机械硬盘组建 RAID5(大容量单盘恢复成功率低)。
Kafka 部署需要依赖 Zookeeper。 负责协调管理并保存 Kafka 集群的所有元数据信息,比如集群都有哪些Broker在运行、创建了哪些 Topic,每个Topic都有多少分区等等。
生产环境建议部署独立的 Zookeeper 集群 以及 Kafka 集群,至少需要 6 个节点。
OkHttpClient 最早用于安卓客户端请求服务端场景,优势是请求稳定,低延迟,甚至可以多数据中心负载均衡。
特性:
当前版本为 Redis 4.0.14,默认配置文件可查阅:https://raw.githubusercontent.com/antirez/redis/4.0/redis.conf
首先确保正确安装 Docker CE,并且留意 Rancher 支持对应的 Docker CE 版本。
单节点 Rancher 默认使用内嵌的 etcd
来保存集群信息,为了避免容器删除后集群信息丢失,建议挂载 数据目录。
首先创建持久化目录,与日志目录
1 | mkdir /data/rancher |
启动 Rancher v2.2.8 版本
1 | docker run -d --restart=unless-stopped \ |
启动完成后,可以使用浏览器直接访问 Rancher 的界面。
1 | # 停止所有容器 |
1 | docker stop <RANCHER_CONTAINER_NAME> |
CentOS7 默认使用 3.1x 内核,而 overlay2 要求 3.12 内核以上,为了更好的体验,需要升级内核版本。
当前内核版本可使用 uname -a
查看。
安装内核的 repo:
1 | rpm -import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org |
查看可用的内核版本:
1 | yum --disablerepo="*" --enablerepo="elrepo-kernel" list available |
从显示列表中,查看当前稳定的 LTS 的版本为 4.x 的包
安装 4.X 的内核 LTS 版本:
1 | yum -y --enablerepo=elrepo-kernel install kernel-lt.x86_64 kernel-lt-devel.x86_64 |
安装完毕后,使用下面的命令查看系统启动顺序:
1 | awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg |
输出结果类似:
1 | CentOS Linux (4.4.196-1.el7.elrepo.x86_64) 7 (Core) |
修改系统默认启动顺序,选择我们新安装的 4.x 版本的内核
1 | vi /etc/default/grub |
修改内容:GRUB_DEFAULT=0
,其中 0 代表刚才查看后的顺序。
1 | grub2-mkconfig -o /boot/grub2/grub.cfg |
安装必要的一些系统工具:
1 | yum install -y yum-utils device-mapper-persistent-data lvm2 |
添加软件源信息:
1 | yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo |
安装当前一个稳定版本:
1 | yum -y install docker-ce-18.09.9-3.el7 docker-ce-cli-18.09.9-3.el7 containerd.io |
1 | systemctl start docker |
检查:
1 | docker version |
1 | /etc/docker/daemon.json |
加入:
1 | { |
重启后生效:
1 | systemctl daemon-reload |
1 | curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose |