用户目录
1 | 用户目录转换绝对路径 |
1 | 用户目录转换绝对路径 |
开源的 RPC 框架有很多,如果专注于 java,可以尝试 finagle,打造基于 java 的微服务系统可以考虑 dubbo
、spring cloud
、spring cloud alibaba
;如果是 c++ 可以尝试 thrift/pb + brpc;如果服务有跨语言调用的需求,可以考虑 thrift、gRPC。
相信,谷歌的背书 + 多语言 + pb & gRPC,会吸引很多人的注意,但是 gRPC 的一些坑还是要慢慢趟才行。
比如 ManagedChannel 默认的负载均衡是 pick_first。公司用了几年,虽然有了服务发现,但是创建 stub 时还是随机选择一个机器创建连接。如果服务端是 python,还要注意多个服务进程的负载均衡问题(python 服务一般会起多个进程,共用一个端口),因为 gRPC 的负载均衡是连接粒度的,如果客户端复用连接,那么就会出现请求全部集中在一个进程上面,这样至多使用机器的一个核心;这个问题简单一点可以通过创建多个连接,请求时随机选取来解决,比较好的解决方案是自定义 load balance,定义 subchannel 创建规则。
还有就是,gRPC 的文档并没有想象中那么多,就 java 来说,封装了大量的逻辑,有些甚至连代码注释说的都很模糊。
ManagedChannel 有很多内置的实现,常用的是 ManagedChannelImpl2
,涉及到几个比较重用的概念。
1 | 运行不可执行 jar 包内的类 |
1 | ... |
1 | nohup ./prometheus --config.file prometheus.yml & |
在添加前,需要对磁盘分区,并创建 lvm。
一台机器,两块存储盘,一个 HDD,一个SSD。HDD 用来做存储,SSD用来做系统盘。
安装系统时可以指定把卷创建在 SSD 盘中,在 HDD 盘上创建存储盘,并挂载到机器。
1 | lsblk |
openstack cinder 支持一台机器上配置多块存储(multiple backends),编辑 /etc/cinder/cinder.conf
。
1 | [DEFAULT] |
这里配置了两个 backends,lvm-nvme 和 lvm-sda,前者为固态硬盘,后者为机械硬盘。
1 | 创建卷类型 |
在 管理员 / 卷 / 卷类型 中,创建卷类型 高性能和存储。
点击卷类型的操作菜单,选择「查看扩展规格」。
创建扩展,key 为 volume_backend_name
,值为LVM_SDA(存储)和 LVM_NVME(高性能)。
在菜单 项目 / 卷 下,创建卷。
指定类型为「高性能」。同理创建其他卷,类型选择「存储」。
最终,在 LVM_SDA 上面创建了 hdd 卷,在 LVM_NVME 上面创建了 ssd 卷。对于卷列表中的 host,其格式为 host@backend-name#pool
,比如 srv@lvm-sda#LVM_SDA
。
使用 lsblk
查看卷信息。
对磁盘创建 lvm。
1 | 创建 |
如果出现 pvcreate
时出现 execlude by a filter
,检查 /etc/lvm/lvm.conf
下的 filters
。
1 | filter = [ "a/sda/", "a/nvme/", "r/.*/" ] |
如果想要接受一个块设备,使用类似下面的配置。
1 | "a|.*|" |
如果想要拒绝一个块设备,使用类似下面的配置。
1 | "r|/dev/cdrom|" |
1 | 命令 |
1 | sudo systemctl status <service> |
1 | sudo vim /etc/nova/nova.conf |
1 | sudo yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel |
1 | 创建 group |