背景

有同学问我,开发Spring Cloud 微服务这一套需要什么配置,读大学时候买的游戏本 可以使用吗?

可以,但是你会搞得很难受,最好内存不要低于 16G
PS: 如下图 本地运行10个微服务,配置低基本上是是卡死状态

我这里就分享一下我的开发机(17 mbp I5 8G)是如何优化本地应用并配合远程阿里云 ECS 完成开发,并且准备用它再大干5年的。

应用内存配置优化

应用组件化部署

我们可以通过 VPN 或者其他技术,实现本地 & 云服务器 之间组网,实现互相之家的通信,并且指定服务中心的网卡,实现服务调用的正常注册。 由于搭建VPN 成本较高且难度较大,本文讲述如何使用ZeroTier 实现。

初始化 ECS

购买 ECS

初始化 CentOS7

curl -O http://pigx.vip/os7init.sh 

sh os7init.sh pig4cloud

安装 zerotier

curl -s https://install.zerotier.com | sudo bash

下载地址: https://www.zerotier.com/download/

部署ZeroTier 组网

基本概念

ZeroTier is a smart Ethernet switch for planet Earth.

翻译:用于地球的智能以太网交换机。

通俗来讲就是 Peer to Peer (P2P) ,ZeroTier 根服务器记录请求路径来做类似于DNS的解析。
主要功能,就是可以把多个不同网络的设备连接在一起,用来就像在一个局域网下 如下图

ZeroTier 配置一个虚拟网段172.17.2.0/24,在家中加入这个网络中,即可访问位于公司172.17.2.101

专有名词

Zerotier 定义了几个专业名词:

1. 注册 zerotier 服务

https://my.zerotier.com/

2. 创建网络

4. 客户端加入创建的网络

zerotier-cli join a0cbf4b62af33545 #上图创建网络生成的16位ID  

输出 200 join OK

zerotier 同意客户端接入

如上图,给客户端分配 172.28.153.245的局域网 IP, 当然网段可以通过 本页Advanced 调整。

同理我们可以在其他设备中加入这个网络.

确定网络联通


网络通了...

Spring Cloud 配置

调整客户端zerotier 注册IP

需要运行在ECS 上的服务配置服务发现选择IP

需要运行在本地的服务 配置服务发现选择IP

服务启动

访问注册中心,查看网络列表,确定每个服务注册IP,都是ZeroTier虚拟IP, 能够互相访问。

【扩展】部署MOON 卫星

配置 moon 服务

cd /var/lib/zerotier-one/

zerotier-idtool initmoon identity.public > moon.json

vim moon.json

zerotier-idtool genmoon moon.json

# 此ID 非常重要对应 唯一服务ID (在 zerotier 后台也能看到)
grep id /var/lib/zerotier-one/moon.json | head -n 1

客户端连接 moon

mkdir /var/lib/zerotier-one/moons.d

cp 000000XXX moons.d/

systemctl restart zerotier-one

grep id /var/lib/zerotier-one/moon.json | head -n 1

zerotier-cli orbit id id

zerotier-cli listpeers

本文使用 mdnice 排版