Microservice(六)[微服務-micro-環境搭建-ubuntu]

1.系統

1.系統信息

sudo cat /proc/version

在這裏插入圖片描述

2.替換軟件源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
sudo sed -i 's/cn.archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
# sudo sed -i 's/cn.security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
# sudo sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
source /etc/apt/sources.list

3.升級

sudo apt-get upgrade -y 
sudo apt-get update
sudo apt upgrade -y 
sudo apt update

4.安裝必備軟件

sudo apt install -y vim 
sudo apt-get install -y vim 
sudo apt install -y git 
sudo apt-get install -y git 
sudo apt install -y wget 
sudo apt-get install -y wget 
sudo apt install -y curl 
sudo apt-get install -y curl 
sudo apt install -y net-tools 
sudo apt-get install -y net-tools 
sudo apt install -y openssh-server 
sudo apt-get install -y openssh-server 
sudo apt install -y bridge-utils 
sudo apt-get install -y bridge-utils 
sudo apt install -y dnsutils
sudo apt-get install -y dnsutils
sudo apt install -y tar 
sudo apt-get install -y tar 
sudo apt install -y unzip 
sudo apt-get install -y unzip 
sudo apt install -y tree 
sudo apt-get install -y tree 
sudo apt install -y make 
sudo apt-get install -y make 
sudo apt install -y g++ 
sudo apt-get install -y g++ 
sudo apt install -y gcc 
sudo apt-get install -y gcc 
sudo apt install -y autoconf 
sudo apt-get install -y autoconf 
sudo apt install -y automake
sudo apt-get install -y automake
sudo apt install -y python-pip 
sudo apt-get install -y python-pip 
sudo apt install -y python-dev 
sudo apt-get install -y python-dev 
sudo apt install -y libffi-dev 
sudo apt-get install -y libffi-dev 
sudo apt install -y openssl 
sudo apt-get install -y openssl 
sudo apt install -y openssl-dev 
sudo apt-get install -y openssl-dev 
sudo apt install -y gcc 
sudo apt-get install -y gcc 
sudo apt install -y libc-dev 
sudo apt-get install -y libc-dev 
sudo apt install -y make 
sudo apt-get install -y make 
sudo apt install -y libtool
sudo apt-get install -y libtool
sudo apt-get install -y teeapt-transport-https 
sudo apt-get install -y ca-certificates 
sudo apt-get install -y software-properties-common  
sudo apt-get clean 
sudo apt-get upgrade -y 
sudo apt-get update
sudo apt upgrade -y 
sudo apt update 

2.Golang

1.下載安裝

cd ~ && wget https://dl.google.com/go/go1.14.2.linux-amd64.tar.gz
cd ~ && sudo tar -zxvf go1.14.2.linux-amd64.tar.gz -C /usr/local
ls /usr/local/ | grep go

2.設置環境變量

mkdir -p ~/workspace/go/bin ~/workspace/go/src ~/workspace/go/pkg && tree ~/workspace/go/
sudo tee -a /etc/profile <<-'EOF'
export GOROOT=/usr/local/go
export GOPATH=~/workspace/go
export GOBIN=$GOPATH/bin
export GO111MODULE="on"
export GOPROXY=https://goproxy.io
export PATH=$PATH:$GOROOT/bin:$GOPATH:$GOBIN:$GOPROXY
EOF
source /etc/profile

3.測試

go env 
go version

2.Docker

1.docker

1.下載安裝

sudo apt-get upgrade -y
sudo apt-get update
sudo apt upgrade -y
sudo apt update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get -y update
sudo apt update
# 安裝docker
sudo apt-get -y install docker-ce
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart
newgrp - docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
        "registry-mirrors": [
                "https://1nj0zren.mirror.aliyuncs.com",
                "http://f1361db2.m.daocloud.io",
                "https://registry.docker-cn.com",
                "https://dockerhub.azk8s.cn",
                "https://docker.mirrors.ustc.edu.cn",
                "https://reg-mirror.qiniu.com",
                "https://hub-mirror.c.163.com",
                "https://mirror.ccs.tencentyun.com",
                "https://docker.mirrors.ustc.edu.cn"
        ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2.測試

docker info
docker version

2.docker-compose

1.下載安裝

cd ~ 
mkdir -p ~/.pip && cd $_ && tee ~/.pip/pip.conf <<-'EOF'
[global]
trusted-host=mirrors.aliyun.com
index-url=http://mirrors.aliyun.com/pypi/simple/
EOF
source ~/.pip/pip.conf
sudo apt install -y python-pip python-dev libffi-dev openssl-dev gcc libc-dev make 
sudo pip install docker-compose

2.測試

docker-compose version

3.protobuf

1.protobuf

1.解決git clone速度慢

sudo cp /etc/hosts /etc/hosts.backup 
curl -skX GET 'https://github.com.ipaddress.com/' | grep -oP '<th>IPv4 Addresses</th><td><ul class="comma-separated"><li>.*?</li>'| grep -oP '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'| awk '{print $1" github.com"}'> ~/myhosts
curl -skX GET 'https://fastly.net.ipaddress.com/github.global.ssl.fastly.net' | grep -oP '<th>IPv4 Addresses</th><td><ul class="comma-separated"><li>.*?</li>'| grep -oP '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'| awk '{print $1" github.global.ssl.fastly.net"}'>> ~/myhosts
sudo /bin/bash -c 'cat ~/myhosts>>/etc/hosts'
cat /etc/hosts
sudo service networking restart
rm -f ~/myhosts

2.下載安裝

cd ~
git clone https://github.com/protocolbuffers/protobuf.git && ls | grep protobuf
# 開始安裝
cd ./protobuf 
git submodule update --init --recursive
./autogen.sh
./configure
make 
make check
sudo make install
sudo ldconfig # [很重要]刷新共享庫

3.測試

protoc --version
protoc --help
sudo cp /etc/hosts.backup /etc/hosts
sudo service networking restart

2.golang-protobuf

1.下載安裝

go get -u -v github.com/golang/protobuf/...
cd $GOPATH/bin && ls -la | grep protoc-gen-go
sudo tee -a /etc/protofile <<-'EOF'
export PATH=$PATH:$GOPATH/bin
EOF
source /etc/profile

2.測試

終端輸入protoc-,然後按下Tab鍵查看是否補全,補全即OK!

protoc-

4.gRPC

1.下載安裝

go get -u -v google.golang.org/grpc/...

2.測試

1.server啓動

cd $GOPATH/pkg/mod/google.golang.org/grpc*/examples/helloworld/*_server && ls
cd $GOPATH/pkg/mod/google.golang.org/grpc*/examples/helloworld/*_server &&  go run main.go

2.client啓動(另開一個終端)

cd $GOPATH/pkg/mod/google.golang.org/grpc*/examples/helloworld/*_client && ls
cd $GOPATH/pkg/mod/google.golang.org/grpc*/examples/helloworld/*_client &&  go run main.go

5.consul

1.下載安裝

cd ~ && sudo apt install -y wget unzip
wget https://releases.hashicorp.com/consul/1.7.2/consul_1.7.2_linux_amd64.zip && ls
sudo unzip ./consul_1.7.2_linux_amd64.zip -d /usr/local/bin/ 

2.測試

consul

6.micro

1.不支持consul註冊服務【默認mdns/etcd】

1.下載

go get -u -v github.com/micro/micro/...

2.編譯安裝

cd $GOPATH/pkg/mod/github.com/micro/ && ls |grep micro

選擇版本進入編譯到/bin/目錄下,名稱爲micro,源文件爲main.go

cd $GOPATH/pkg/mod/github.com/micro/[email protected]
sudo $GOROOT/bin/go build -o /bin/micro main.go

3.插件安裝

go get -u -v github.com/golang/protobuf/{proto,protoc-gen-go}
go get -u -v github.com/micro/protoc-gen-micro

4.測試

micro --version
micro --help

2.支持consul註冊服務

在生成的srv服務進行修改main.go即可
原main.go

package main

import (
	"github.com/micro/go-micro/util/log"
	"github.com/micro/go-micro"
	"micro/rpc/srv/handler"
	"micro/rpc/srv/subscriber"

	srv "micro/rpc/srv/proto/srv"
)

func main() {
	// New Service
	service := micro.NewService(
		micro.Name("go.micro.srv.srv"),
		micro.Version("latest"),
	)

	// Initialise service
	service.Init()

	// Register Handler
	srv.RegisterSrvHandler(service.Server(), new(handler.Srv))

	// Register Struct as Subscriber
	micro.RegisterSubscriber("go.micro.srv.srv", service.Server(), new(subscriber.Srv))

	// Register Function as Subscriber
	micro.RegisterSubscriber("go.micro.srv.srv", service.Server(), subscriber.Handler)

	// Run service
	if err := service.Run(); err != nil {
		log.Fatal(err)
	}
}


修改後【中文註釋部分即爲修改部分】:

package main

import (
	"micro/rpc/srv/handler"
	"micro/rpc/srv/subscriber"

	"github.com/micro/go-micro"
	"github.com/micro/go-micro/util/log"

	srv "micro/rpc/srv/proto/srv"

	"github.com/micro/go-micro/registry"          // 添加註冊插件
	"github.com/micro/go-plugins/registry/consul" // 添加註冊插件的consul支持
)

func main() {
	// consul註冊
	consulReg := consul.NewRegistry(
		registry.Addrs("127.0.0.1:8500"),
	)
	// New Service
	service := micro.NewService(
		micro.Name("go.micro.srv.srv"),
		micro.Version("latest"),
		micro.Registry(consulReg), // micro添加consul的註冊
	)

	// Initialise service
	service.Init()

	// Register Handler
	srv.RegisterSrvHandler(service.Server(), new(handler.Srv))

	// Register Struct as Subscriber
	micro.RegisterSubscriber("go.micro.srv.srv", service.Server(), new(subscriber.Srv))

	// Register Function as Subscriber
	micro.RegisterSubscriber("go.micro.srv.srv", service.Server(), subscriber.Handler)

	// Run service
	if err := service.Run(); err != nil {
		log.Fatal(err)
	}
}


重新run[consul 一定要開啓consul agent -dev]即可

go run main.go
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章