深入微服务架构 | 微服务与k8s架构解读

打印 上一主题 下一主题

主题 1019|帖子 1019|积分 3057

微服务项目架构解读
① 什么是微服务?

微服务是指开发一个单个小型的但有业务功能的服务,每个服务都有本身的处理和轻量通讯机制,可以摆设在单个或多个服务器上。
微服务也指一种种松耦合的、有肯定的有界上下文的面向服务架构。也就是说,如果每个服务都要同时修改,那么它们就不是微服务,因为它们紧耦合在一起;如果你需要把握一个服务太多的上下文场景使用条件,那么它就是一个有上下文边界的服务,这个界说来自DDD范畴驱动计划。
它的主要特点是组件化、松耦合、自治、去中央化,体现在以下几个方面:
一组小的服务
服务粒度要小,而每个服务是针对一个单一职责的业务本事的封装,专注做好一件事变。
独立摆设运行和扩展
每个服务能够独立被摆设并运行在一个进程内。这种运行和摆设方式能够赋予系统灵活的代码构造方式和发布节奏,使得快速交付和应对变革成为可能。
独立开发和演化
技术选型灵活,不受遗留系统技术束缚。合适的业务问题选择合适的技术可以独立演化。服务与服务之间采取与语言无关的API进行集成。相对单体架构,微服务架构是更面向业务创新的一种架构模式。
独立团队和自治
团队对服务的整个生命周期负责,工作在独立的上下文中,本身决策本身治理,而不需要统一的指挥中央。团队和团队之间通过松散的社区部落进行衔接。
我们可以看到整个微服务的思想就如我们现在面对信息爆炸、知识爆炸是一样的:通过解耦我们所做的事变,分而治之以淘汰不须要的损耗,使得整个复杂的系统和构造能够快速的应对变革。
② 微服务的长处

每个微服务都很小,如许能聚焦一个指定的业务功能或业务需求。
微服务能够被小团队单独开发,这个小团队是2到5人的开发职员构成。
微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或摆设阶段都是独立的。
微服务能使用不同的语言开发。
微服务允许容易且灵活的方式集成主动摆设,通过连续集成工具,如Jenkins, bamboo 。
一个团队的新成员能够更快投入生产。
微服务易于被一个开发职员理解,修改和维护,如许小团队能够更关注本身的工作结果。无需通过互助才能体现价值。
微服务允许你利用融合最新技术。
微服务只是业务逻辑的代码,不会和HTML,CSS 或其他界面组件混淆。
微服务能够即时被要求扩展。
微服务能摆设中低端配置的服务器上。
易于和第三方集成。
每个微服务都有本身的存储本事,可以有本身的数据库。也可以有统一数据库
k8s集群架构解读
① 什么是kubernetes

Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg)。在Docker技术的底子上,为容器化的应用提供摆设运行、资源调度、服务发现和动态伸缩等一系列完整功能,进步了大规模容器集群管理的便捷性。Kubernetes优势:
容器编排
轻量级
开源
弹性伸缩
负载均衡   
② Kubernetes架构和组件


 主从分布式架构,Master/Node


  • 服务分组,小集群,多集群
  • 服务分组,大集群,单集群
Kubernetes Master / Node : 如果各人对诸如hadoop如许的分布式集群有所相识,就会发现k8s的计划理念和其他分布式架构的非常雷同的:Master节点负责接收用户的指令、分配使命以及记载各个node的情况;而node节点负责接收Master的指令,启动相应的Pod(k8s的最小执行单元,是一个Container的聚集)
安装k8s时会指定Master和Node节点,摆设好之后,我们通过k8s的api与Master节点进行交互。Master节点收到了我们的指令(好比新启动一个Pod),会调度Node节点去完成它们。当然,其中底层的调度计谋、详细的实现细节对于我们使用者来说都是隐蔽的,不需要我们去相识。
master工作流程图

Kubecfg将特定的哀求,好比创建Pod,发送给Kubernetes Client。
Kubernetes Client将哀求发送给API server。
API Server根据哀求的类型,好比创建Pod时storage类型是pods,然后依此选择何种REST Storage API对哀求作出处理。
REST Storage API对的哀求作相应的处理。
将处理的结果存入高可用键值存储系统Etcd中。
在API Server响应Kubecfg的哀求后,Scheduler会根据Kubernetes Client获取集群中运行Pod及Minion/Node信息。
依据从Kubernetes Client获取的信息,Scheduler将未分发的Pod分发到可用的Minion/Node节点上。
Kubernetes Node运行节点,运行管理业务容器,包罗如下组件:
1.Kubelet负责管控容器,Kubelet会从Kubernetes API Server接收Pod的创建哀求,启动和制止容器,监控容器运行状态并汇报给Kubernetes API Server。
2.Kubernetes Proxy负责为Pod创建代理服务,Kubernetes Proxy会从Kubernetes API Server获取所有的Service信息,并根据Service的信息创建代理服务,实现Service到Pod的哀求路由和转发,从而实现Kubernetes层级的虚拟转发网络。
3.DockerNode上需要运行容器服务。
Kubelet[节点上的Pod管家]
负责Node节点上pod的创建、修改、监控、删除等全生命周期的管理 定时上报本Node的状态信息给API Server。
kubelet是Master API Server和Minion/Node之间的桥梁,接收Master API Server分配给它的commands和work,通过kube-apiserver间接与Etcd集群交互,读取配置信息。
详细的工作如下:
设置容器的环境变量、给容器绑定Volume、给容器绑定Port、根据指定的Pod运行一个单一容器、给指定的Pod创建network 容器。
同步Pod的状态、同步Pod的状态、从cAdvisor获取container info、 pod info、 root info、 machine info。
在容器中运行命令、杀死容器、删除Pod的所有容器。
③ k8s常用命令

创建资源:
  1. kubectl create -f yaml文件
复制代码
查察资源:

  • kubectl get <resource_type>
  • # 好比获取K8s集群下pod的信息
  • kubectl get pod
  • # 更加详细的信息
  • kubectl get pod -o wide
  • #获取pod更细致的状态信息
  • kubectl describe pod pod名称
  • #查察所有的nodes
  • kubectl get nodes
  • #查察所有的namespace
  • kubectl get pod --all-namespaces
更换资源:
  1. kubectl replace -f yaml文件
复制代码
删除资源:
  1. kubectl replace -f yaml文件
复制代码
查察日志:

  • kubectl logs pod名称
  • #如果想动态查察日志加-f
总结:

感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望各人少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给各人分享一些主动化测试的学习资源,希望能给你前进的路上带来资助。

软件测试口试文档

我们学习必然是为了找到高薪的工作,下面这些口试题是来自阿里、腾讯、字节等一线互联网大厂最新的口试资料,而且有字节大佬给出了权威的解答,刷完这一套口试资料信赖各人都能找到满足的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战堆栈,这个堆栈也伴随我走过了最艰难的路程,希望也能资助到你!以上均可以分享,点下方小卡片即可自行领取。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

吴旭华

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表