一、微服务的简介
概念:把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务,这些应用可独立地进行开发、管理和迭代
本质:用一些功能比较明确、业务比较精练的服务去解决更大、更实际的问题。
基于微服务架构的设计目的:有效的拆分应用,实现敏捷开发和部署
微服务项目-缺点
1)开发人员要处理分布式系统的复杂性
2)多服务运维难度,随着服务的增加,运维的压力也在增大
3)系统部署依赖
4)服务间通信成本
5)数据一致性
6)系统集成测试
7)性能监控
微服务架构有很多吸引人的地方,不过在拥抱微服务之前要认清它所带来的挑战。而每一种架构都有其优缺点,我们需要根据项目业务和团队情况来选择合适的架构。
二、微服务项目K8S集群部署
微服务项目部署- Kubernetes
Kubernetes(k8s)是Google开源的容器集群管理系统
Kubernetes-个用于容器集群的自动化部署、扩容以及运维的开源平台。通过
Kubernetes可以快速有效地响应用户需求;快速而有预期地部署你的应用;极速地扩展你的应用;无缝对接新应用功能;节省资源,优化硬件资源的使用。为容器编排管理提供了完整的开源方案。
Kubernetes-容器
Docker容器隔离的特性和宿主机进行解耦,使我们的服务不需要依赖于宿主机而运行,与宿主机互不影响,Docker容器十分轻量。
kubernetes则负责管理服务中所有的Docker容器,创建、运行、重启与删除容器,实现容器集群的自动化部署、自动扩缩容、维护等功能
Docker就像汽车,而Kubernetes就像停车场。
1、Master节点
K8S中的Master是集群控制节点,负责整个集群的管理和控制
Master节点上运行着集群管理相关的一组进程etcd、 API Server. Controller Manager、Scheduler,后三个组件构成了Kubernetes的总控中心,这些进程实现了整个集群的资源管理、Pod调度、弹性伸缩、安全控制、系统监控和纠错等管理功能,并且全都是自动完成
2、部署- Deployment.ymI
类似于Docker中的镜像Image,也就是容器(Pods)实例的模板,容器实例是根据Deploy创建出来的。在Deployment对象中会写明容器的镜像,容器的版本,容器要部署的数量等信息。
3、Node节点
Node是Kubernetes集群架构中运行Pod的服务节点。Node是Kubernetes集群操作的单元,用来承载被分配Pod的运行,是Pod运行的宿主机。
每个Node都会被Master分配一些工作负载, 当某个Node宕机时,其上的工作负载会被Master自动转移到其他节点上
4、K8s的核心概念---Pod
运行于Node节点上,若干相关容器的组合。Pod内包含的容器运行在同一宿主机上,使用相同的网络命名空间、IP地址和端口,能够通过localhost进行通。
Pod是Kurbernetes进行创建、调度和管理的最小单位,它提供了比容器更高层次的抽象,使得部署和管理更加灵活。-个Pod可以包含- 个容器或者多个相关容器
常用指令
三、微服务性能监控
部署流程
◆部署Grafana
◆部署node_ exporter
◆部署mysq|_ exporter
◆部署prometheus
◆检查各个监控组件是否运行正常
◆检查Prometheus的web页面是否显示UP状态
◆Grafana的各个node界面是否正常
◆Grafana的K8S本身监控页面是否正常
四、微服务性能测试实战
1、以登录项目网址为例
2、查看监控结果