从运维角度看微服务 & k8s部署微服务【偏理论】【AL】

从运维角度看微服务 & 部署微服务【偏理论】

1、微服务的特点

服务组件化:
每个服务独立开发、部署,有效避免一个服务的修改引起整个系统重新部署。
技术栈灵活:
约定通信方式,使得服务本身功能实现对技术要求不再那么敏感。

独立部署:
每个微服务独立部署,加快部署速度,方便扩展。
扩展性强:
每个微服务可以部署多个,并且有负载均衡能力。
独立数据:
每个微服务有独立的基本组件,例如数据库、缓存等。

2 、另一个项目的微服务架构图及解释

① discovery-service  8761   
② zipkin-service     9411
③ notebook-service   1111
④ gateway-service    8765

在这里插入图片描述

3、单体应用 vs 微服务

在这里插入图片描述
微服务架构图

注册中心 eureka-service
网关 api gateway / gateway-service

前端服务 portal-service
商品服务 product-service
订单服务 order-service
库存服务 stock-service

配置中心 Apollo

在这里插入图片描述

4 微服务架构的理解

1、微服务间如何通信?REST API,RPC,MQ
2、微服务如何发现彼此?
3、组件之间怎么个调用关系?
4、哪个服务作为整个网站入口?
5、哪些微服务需郪对外访问?
6、微服务怎么部署?更新?扩容?
7、区分有状态应用与无状态应用
----------回答1----------------

1、微服务间如何通信?REST API,RPC,MQ
2、微服务如何发现彼此?通过服务发现机制,如使用consul、etcd等服务发现技术,可以让微服务之间相互发现。
3、组件之间怎么个调用关系?组件之间通过API调用机制进行通信,如RESTful API,RPC,MQ等。
4、哪个服务作为整个网站入口?最终用户访问的入口服务,一般是一个负责处理外部请求的API网关服务。

5、哪些微服务需要对外访问?对外提供服务的服务需要对外访问,如:API网关服务,Auth服务,支付服务等。
6、微服务怎么部署?更新?扩容?微服务可以采用容器化部署,通过容器编排工具如Kubernetes来实现部署,更新,扩容等。
7、区分有状态应用与无状态应用?有状态应用是指应用程序的状态会被保存,比如服务器的内存状态,会话状态等,而无状态应用是指应用程序的状态不会被保存,比如HTTP服务器,每次请求都会从头开始处理,没有记录之前的状态。
----------回答2--------
1、微服务间可以通过REST API、RPC或者消息队列(MQ)来进行通信。REST API是一种轻量级的通信方式,通过HTTP请求和响应来实现;RPC是远程过程调用的缩写,是一种简单的、高效的、基于二进制的远程通信方式;消息队列是一种分布式系统中,应用程序间通信的方式。
2、微服务可以通过服务发现来发现彼此。服务发现是一种动态获取服务地址和可用性的机制,常用的服务发现机制有DNS、Eureka、Consul等。
3、组件之间的调用关系取决于各组件的设计,通常通过调用API、RPC、消息队列等来实现组件间的通信。

4、整个网站的入口通常是一个API网关,它是整个系统的入口,负责请求的路由和组合,对外暴露统一的接口。
5、对外访问的微服务可以通过API网关进行对外访问。具体哪些微服务需要对外访问,取决于业务需求。
6、微服务的部署、更新、扩容等操作可以通过自动化工具,如Docker、Kubernetes等进行实现。

7、有状态应用:
需要记录它在每次请求间的状态,例如购物车、订单状态等。
可以使用关系型数据库或 NoSQL 数据库来存储应用状态。
需要处理复杂的状态同步,以确保在分布式环境中的数据一致性。

无状态应用:
不需要记录任何状态,因此不需要存储任何状态。
每个请求都是独立的,因此不需要关心数据的同步。
可以使用负载均衡器直接将请求分派到任意可用实例上,这使得它们可以轻松扩展。

5 为什么要用注册中心

微服务架构是一种分布式架构,其中一个微服务可以独立地部署、开发、运行和维护。当微服务数量增加时,通信和发现成为了一个重要的问题。
注册中心是微服务架构中一个关键的组件,它的作用是管理微服务的注册和发现。
每个微服务启动时,都会在注册中心注册自己的服务信息,包括自己的地址、端口号等。其他微服务可以通过注册中心获取到需要调用的微服务的地址和端口。

注册中心还提供了容错机制,当一个微服务故障时,它可以从注册中心删除该服务的注册信息,避免请求该服务时产生错误。
总的来说,注册中心是微服务架构中的一个核心组件,对于简化微服务的通信和发现,保证微服务的高可用性起着重要的作用。

在这里插入图片描述

6 项目迁移到K8S平台是怎样的流程

1制作镜像 --> 2控制器管理Pod --> 3暴露应用 --> 4对外发布应用 --> 5日志/监控
在这里插入图片描述

1、制作镜像

在这里插入图片描述

2、控制器管理Pod / deployment

在这里插入图片描述

3、暴露应用 service

在这里插入图片描述

4、对外发布应用 ingress (域名)

在这里插入图片描述

5、Pod数据持久化

在这里插入图片描述

6、日志与监控

Filebeat+ELK
Prometheus+Grafana

7 传统部署与K8S部署区别

传统部署 - 整体架构
在这里插入图片描述
K8S部署–整体框架
在这里插入图片描述

(在K8S中部署SpringCloud微服务项目 53:22)
END

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes (k8s) 是一个开源的容器编排平台,用于管理和自动化容器化应用程序的部署、扩展和管理。Docker 是一种流行的容器化技术,它允许开发人员将应用程序及其依赖项封装在一个独立的容器中。 微服务架构是一种软件架构风格,将一个大型应用程序拆分为一组更小、独立的服务,每个服务都可以独立开发、部署和扩展。微服务架构可以提供更高的灵活性、可伸缩性和可维护性。 在 k8s 和 Docker 的组合下,可以实现微服务架构。每个微服务可以打包成一个独立的 Docker 容器,并由 k8s 管理和调度。k8s 提供了以下功能来支持微服务架构: 1. 容器编排:k8s 可以管理和调度大量的容器,确保它们在集群中的正确运行。 2. 自动伸缩:k8s 可以根据应用程序的负载情况自动扩展或缩减容器实例数量,以满足需求。 3. 服务发现和负载均衡:k8s 提供内建的服务发现功能,使得微服务之间可以轻松地相互通信,并提供负载均衡机制,以平衡流量分布。 4. 高可用性:k8s 可以确保应用程序的高可用性,例如通过自动重启失败的容器实例或在节点故障时重新调度容器。 5. 滚动更新:k8s 支持无宕机更新,可以逐步将新版本的微服务部署到生产环境,而不影响正在运行的服务。 综上所述,使用 k8s 和 Docker 可以实现高效的微服务架构,提供强大的容器编排和管理能力,使得开发人员能够更加灵活和可靠地构建、部署和管理微服务应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值