gitee.com/woood2/luca@v1.0.4/deployments/README.md (about) 1 2 ### 准备Go开发环境 3 IDE 4 - Goland(推荐) 5 - VS Code 6 - other 7 8 Go版本 9 - golang 1.14+ 10 11 swag插件 12 ``` 13 go get -u github.com/swaggo/swag/cmd/swag@v1.6.7 14 export PATH="$PATH:$(go env GOPATH)/bin" 15 # test 16 cd cmd/backend && swag init 17 ``` 18 19 protoc命令 20 ``` 21 # mac 22 brew install protobuf 23 protoc --version 24 libprotoc 3.11.1 25 26 # centos 27 sudo yum -y install gcc automake autoconf libtool make 28 sudo yum -y install gcc gcc-c++ 29 wget https://github.com/protocolbuffers/protobuf/releases/download/v3.11.2/protobuf-all-3.11.2.tar.gz 30 tar zxf protobuf-all-3.11.2.tar.gz 31 cd protobuf-3.11.2 32 ./configure -prefix=/usr/local/ 33 make && sudo make install 34 protoc --version 35 libprotoc 3.11.2 36 ``` 37 38 protobuf插件 39 ``` 40 go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.26 41 go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1 42 go get google.golang.org/grpc 43 44 # test 45 cd cmd/micro/internal/grpc/pb && ./protoc.sh server.proto 46 cd cmd/micro/internal/grpc/grpc_health_v1 && ./protoc.sh health.proto 47 ``` 48 49 ### 引用RPC服务 50 一套完整的web应用是由主程序(go)和一系列RPC服务(Mysql等)构成的。 51 本机调试阶段,开发者通常在IDE中运行go程序,然后引用远程dev环境中的公共RPC实例。 52 这些RPC实例的引用地址,可以通过`configs/application.yml`指定。 53 54 当然,开发者也被允许自行构建RPC服务的本机实例,以进行各种大胆试验。 55 关于如何构建本机实例,下文将提供详细指引。 56 57 ##### 基于docker构建 58 除了少数例外,绝大多数的RPC服务都可以基于docker构建。 59 60 配置 61 - `docker/docker-compose.yml` 62 - `docker/prometheus.yml` 63 64 常用命令 65 - 进入docker目录:`cd deployments/docker` 66 - 构建并且启动:`docker-compose up -d` 67 - 停止:`docker-compose stop` 68 - 重新启动:`docker-compose restart` 69 - 添加/更新单个容器 `docker-compose up -d nginx` 70 - MAC查看端口号 `netstat -avnp tcp|grep LISTEN` 71 - Linux查看端口号 `netstat -tlnp` 72 73 服务清单及内存开销 74 - kibana:68 MB 75 - elastic-search:539.4 MB (java "ES_JAVA_OPTS=-Xms256m -Xmx512m") 76 - prometheus:46.5 MB 77 - zookeeper:62 MB 78 - kafka:370 MB (scala & java,KAFKA_HEAP_OPTS=-Xmx512m -Xms128m) 79 - kafka-manager 250 MB 80 - consul 18.9 MB 81 - hystrix-dashboard 376.2 MB 82 - redis 1.9 MB 83 - mongo 34.4 MB 84 - mysql 247.3 MB 85 - zipkin 206.2 MB 86 - 内存总计:2GB(取自某一次运行快照,不含docker固有开销) 87 88 ##### 基于原生构建 89 出于各种原因,建议采用原生方式构建以下这些程序。 90 - go程序本身:直接在IDE中运行,或者`go build`后直接运行二进制文件 91 - fluentd:详见 [deployments/EFK.md](https://gitee.com/woood2/luca/blob/master/deployments/EFK.md) 92 - consul-template:详见 [deployments/consul-template.md](https://gitee.com/woood2/luca/blob/master/deployments/consul-template.md) 93 94 ##### 初始化 95 Mysql 96 1. 创建 schema `luca` 97 2. 执行 [scripts/init.sql](https://gitee.com/woood2/luca/blob/master/scripts/init.sql) 98 99 mongo 100 ``` 101 1. 管理员连接 102 mongodb://admin:123456@{ip}:27017/ 103 104 2. 创建db 105 use luca 106 107 3. 创建用户 108 use admin 109 db.createUser({ 110 user : "woood2", 111 pwd : "123456", 112 roles: [ { role : "readWrite", db : "luca" } ] 113 }) 114 115 4. disconnect 客户端 && 重启 mongo 116 117 5. 用户连接 118 mongodb://woood2:123456@{ip}:27017/luca 119 ``` 120 121 kafka-manager 122 1. 访问web后台 `{ip}:9000` admin/123456 123 2. 手动添加kafka集群,勾选 `Enable JMX Polling`,以及 `Poll consumer information ` 124 3. 补充:不需要设置JMX Port,哪怕kafka启用的JMX Port不是常用的9999 125 3. 手动创建topic "luca_greet" 50 partition 126 127 prometheus 时区设置 128 1. 访问prometheus后台`http://{ip}:9090` 129 2. 在Graph页面勾选 `use local time`,以正确显示本地时区 130 131 hystrix-dashboard 设置 132 1. 访问web后台 `http://{ip}:8181/hystrix` 133 2. 输入hystrix metrics的端点,例如 `http://{ip}:8282` 134 135 EFK 配置及使用 136 - 详见 [deployments/EFK.md](https://gitee.com/woood2/luca/blob/master/deployments/EFK.md)