微服务项目启动时间长
因为引入了很多Spring Cloud中的组件,所以时间慢了
本来是写业务代码的,但是因为要处理很多微服务中的问题,不得已引入Spring Cloud各种组件,从而项目的体量变大了
(1)对业务代码的侵入性、耦合性比较强
(2)开发者而言,SC时间和精力成本还是比较大的
(3)一些互联网公司产品的升级是非常频繁的
(4)服务拆分的越细,只是感觉上解耦了,实际上维护的成本缺增加了——>网络的问题
微服务网格(Service Mesh)
prana(Netflix公司)、local proxy(唯品会)、linkerd——->某种意义上都和原有公司的业务强绑定,并不具备通用性
容器化部署
- 节约机器资源
- 方便服务迁移
istio
对于微服务的落地上线
(1) 容器化
(2) 容器编排:K8S
(3) Service Mesh
(4) Spring CloudDocker
Docker构建jar项目镜像
1、将项目打包成jar
2、编写DockerFile
FROM openjdk:8
COPY pay-service-0.0.1-SNAPSHOT.jar pay-service.jar
CMD ["java", "-jar", "pay-service.jar"]
3、执行Docker构建镜像命令
:::info 该命令默认使用当前目录下的DockerFile :::docker build -t pay-service-image .
4、创建对应的镜像容器并启动
docker run -d --name payservice01 -p 9090:8080 pay-service-image
5、将本地镜像发布至阿里云镜像仓库
在本地登录注册的阿里云镜像仓库
将镜像推送到Registry$ sudo docker login --username=fcs****@gmail.com registry.cn-beijing.aliyuncs.com
从Registry中拉取镜像$ docker login --username=fcs****@gmail.com registry.cn-beijing.aliyuncs.com
$ docker tag [ImageId] registry.cn-beijing.aliyuncs.com/fcant/save:[镜像版本号]
$ docker push registry.cn-beijing.aliyuncs.com/fcant/save:[镜像版本号]
$ docker pull registry.cn-beijing.aliyuncs.com/fcant/save:[镜像版本号]
Docker集群的管理
Docker swarm
Mesos
Kubernetes
但是在K8s世界中,它不会直接操作container,而是会操作最小单元PodPod可以理解为是由一个或者多个container的组合。K3s:轻量级 Kubernetes
https://k3s.io/
K3s的工作原理
MiniKube:搭建单机版的K8s集群的小工具
Kubeadm:搭建本地的多个节点的K8s集群
Kubernetes上发布应用的流程
1、编写yaml文件
```yaml apiVersion: apps/v1 kind: Deployment metadata:
spec: selector: matchLabels:name: pay-service
replicas: 2 template: metadata: labels:app: pay-service
spec: containers:app: pay-service
- name: pay-service
image: registry.cn-hangzhou.aliyuncs.com/fcant-springcloud/pay-service-image
ports:
- containerPort: 8080
apiVersion: v1 kind: Service metadata: name: pay-service spec: ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
app: pay-service
type: NodePort
<a name="ZArHR"></a>
#### 2、应用该yaml文件
```bash
kubectl apply -f pay-service.yaml
3、查看创建的Pods
kubectl get pods -w
4、查看服务的情况
kubectl get svc
5、进行服务的扩缩容
kubectl scale deploy pay-service --replicas=10
Kubernetes Web管理控制台Dashboard部署查看
1、使用官方提供的yaml文件创建Pod
https://github.com/kubernetes/dashboard/blob/master/aio/deploy/recommended.yaml2、应用yaml配置
kubectl apply -f recommended.yaml
3、查看创建的Pods
kubectl get pods -n kubernetes-dashboard
4、查看服务的详情
kubectl get svc -n kubernetes-dashboard
5、查看登录Dashboard Token的命令
kubectl describe secret -n kube-system ${ADMIN_SECRET} | grep -E '^token' | awk '{print $2}'
MiniKube中启动Dashboard
minikube dashboard