K8s 技术全景:架构、应用和优化
本文深入探讨了Kubernetes(K8s)的关键方面,包括其架构、容器编排、网络与存储管理、安全与合规、高可用性、灾难恢复以及监控与日志系统。
关注【TechLeadCloud】,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人
一、介绍
Kubernetes的历史和演进
Kubernetes(简称K8s)是一个开源的容器编排系统,用于自动化应用程序的部署、扩展和管理。它最初是由Google内部的Borg系统启发并设计的,于2014年作为开源项目首次亮相。
初始阶段
Kubernetes的诞生源于Google内部对大规模容器管理的需求。早在2014年之前,Google已经在其内部系统Borg上积累了大量关于容器编排和管理的经验。这些经验和技术最终孕育出Kubernetes。
发展阶段
随着云计算和微服务架构的兴起,Kubernetes迅速成为行业标准。它的设计哲学、可扩展性和社区支持是其成功的关键因素。2015年,Cloud Native Computing Foundation(CNCF)成立,并接管了Kubernetes的发展。在CNCF的支持下,Kubernetes经历了快速发展,吸引了一大批贡献者和用户。
演进阶段
Kubernetes不断演进,增加了对多种云平台的支持,改进了网络和存储功能,增强了安全性。其社区也不断扩大,衍生出众多相关项目和工具,形成了一个庞大的生态系统。
K8s的核心概念和设计理念
核心概念
- Pods:Pod是Kubernetes的基本运行单位,代表了在集群中运行的一个或多个容器的组合。
- Services:Service是对一组提供相同功能的Pods的抽象,它提供了一个稳定的网络接口。
- Deployments:Deployment提供了对Pods和ReplicaSets(副本集)的声明式更新能力。
设计理念
- 声明式配置:Kubernetes使用声明式配置(而非命令式),用户定义期望状态,系统负责实现这一状态。
- 自我修复:系统能够自动替换、重启、复制和扩展集群中的节点。
- 可扩展性:Kubernetes设计了一套强大的APIs,允许在其上构建更复杂的系统。
- 负载均衡和服务发现:Kubernetes能够自动分配IP地址和DNS名,以及平衡网络流量,以实现高效的服务发现和负载均衡。
- 多维度资源调度:它支持基于CPU、内存等多种资源类型的调度决策。
Kubernetes的这些概念和设计理念共同构成了其强大的容器编排和管理能力,使其成为当今云原生应用和微服务架构的首选平台。
二、K8s架构深入解析
架构、应用与优化 Kubernetes的架构设计旨在提供一个分布式、可扩展且高度可用的容器编排平台。它由多个组件构成,协同工作以管理集群的生命周期和操作。
主要组件和节点类型
1. 控制平面(Master节点)
控制平面是Kubernetes的大脑,负责整个集群的管理和协调。它包含几个关键组件:
- API服务器(kube-apiserver):作为集群的前端,处理REST请求,是所有通信的枢纽。
- 集群数据存储(etcd):一个轻量级、高可用的键值存储,用于保存所有集群数据。
- 控制器管理器(kube-controller-manager):运行控制器进程,这些控制器包括节点控制器、副本控制器等。
- 调度器(kube-scheduler):负责决定将新创建的Pod分配给哪个节点。
2. 工作节点(Worker节点)
工作节点是运行应用程序容器的物理服务器或虚拟机。它们包括:
- Kubelet:确保容器在Pod中运行,并向控制平面汇报节点的状态。
- Kube-Proxy:负责节点上的网络代理,实现服务发现和负载均衡。
- 容器运行时:负责运行容器,例如Docker或containerd。
控制平面和数据平面的工作原理
控制平面
控制平面维护着集群的全局状态,如调度决策、响应Pod生命周期事件、控制器的逻辑等。它确保集群始终处于用户定义的期望状态。
数据平面
数据平面包括所有工作节点,负责实际运行用户的应用程序。它通过Kubelet和Kube-Proxy来维护Pod的生命周期和网络规则。
集群状态管理和调度算法
集群状态管理
Kubernetes通过etcd来维护集群状态。所有组件都通过API服务器与etcd交互,获取或更改集群的状态信息。
调度算法
Kubernetes调度器采用多步骤的过程来选择最佳节点:
- 过滤:基于资源需求、策略限制、亲和性规则等过滤掉不适合的节点。
- 评分:对于剩余节点,基于资源使用率、网络拓扑等因素计算评分。
- 选择:选择得分最高的节点来部署Pod。
此过程确保了有效的资源分配和负载平衡,同时满足用户对部署位置的具体要求。
Kubernetes架构的每个组成部分都被精心设计以提高效率、可靠性和可扩展性,确保其能够应对各种规模和复杂度的应用需求。
三、容器编排和管理
容器编排是Kubernetes的核心功能,它负责管理容器的生命周期、维护应用的健康和确保服务的可用性。在这一部分,我们将深入探讨Kubernetes在容器编排和管理方面的机制和组件。
Pod生命周期管理
1. Pod的创建
- 定义:Pod是Kubernetes中最小的部署单元,通常包含一个或多个容器。
- 配置:通过YAML或JSON文件定义Pod的规格,包括容器镜像、端口、环境变量等。
2. Pod的状态
- Pending:Pod已被Kubernetes接受,但有一个或多个容器尚未创建。
- Running:Pod已被绑定到一个节点,所有容器都已创建,至少有一个正在运行。
- Succeeded:Pod中的所有容器都正常运行并已退出,不会重启。
- Failed:Pod中的所有容器都已终止,且至少有一个因故障终止。
- Unknown:Pod的状态无法确定。
3. Pod的生命周期钩子
- PostStart:在容器创建后立即执行的操作。
- PreStop:在容器终止之前执行的操作。
控制器模式
1. Deployment
- 用途:管理无状态的应用。
- 功能:确保指定数量的Pod副本始终运行,支持滚动更新和回滚。
2. StatefulSet
- 用途:管理有状态的应用。
- 功能:为每个副本维护一个持久的标识符和存储。
3. DaemonSet
- 用途:在集群的每个节点上运行一份Pod副本。
- 功能:用于运行日志收集器、监控代理等集群范围的服务。
4. Job和CronJob
- 用途:执行一次性或定时任务。
- 功能:Job用于执行批处理任务,CronJob用于定时任务。
服务发现和负载均衡
1. Service
- 定义:一种抽象,定义了访问一组Pod的方式。
-
类型:
- ClusterIP:在集群内部提供一个内部IP。
- NodePort:在每个节点的指定端口上提供访问。
- LoadBalancer:使用外部负载均衡器提供访问。
- ExternalName:通过DNS名映射到外部服务。
2. Ingress
- 定义:管理外部访问集群服务的规则。
- 功能:提供URL路由、负载均衡、SSL终端和名称基础的虚拟主机。
容器编排和管理是Kubernetes的核心强项,它通过一系列精密设计的机制和组件,确保容器化应用的高效、可靠运行。这些功能的深度和灵活性使Kubernetes成为当今企业级容器管理的首选平台。
四、网络和存储
在Kubernetes中,网络和存储的管理对于保证容器化应用的高效运行至关重要。这部分将深入探讨Kubernetes在这两个关键领域的实现机制。
网络模型与策略
1. 网络模型
Kubernetes采用的是扁平化网络模型,要求每个Pod都有一个独一无二的IP地址。这意味着在整个集群内,每个Pod都应该能够直接访问其他Pod,而无需NAT。
- Pod-to-Pod Communication:Pod之间可以直接通信,无需通过NAT。
- Pod-to-Service Communication:Service作为Pods的抽象,提供了一个稳定的接口供Pods间通信。
2. 网络策略
Kubernetes允许使用网络策略来控制Pod间的流量。这些策略基于标签和命名空间,允许定义复杂的规则集,以确定Pods间的通信权限。
- 入口和出口规则:定义哪些类型的流量可以进入或离开Pod。
- 基于标签的隔离:通过标签来标识Pods和服务,实现细粒度的网络隔离。
持久化存储和Volume管理
1. Volume
Kubernetes中的Volume是一个存储在Pod中的目录,可以是本地的目录,也可以是远程存储或其他高级存储设备。
- 生命周期:Volume的生命周期与Pod相同,它在Pod启动时创建,在Pod退出时销毁。
- 类型:支持多种类型的Volume,如emptyDir、hostPath、NFS、PersistentVolume等。
2. PersistentVolume (PV) 和 PersistentVolumeClaim (PVC)
- PersistentVolume (PV):集群资源,代表一块存储空间。PV是独立于Pod的,可以在Pod间共享。
- PersistentVolumeClaim (PVC):用户对存储的请求。PVC消费PV资源,PVC与PV之间的关系类似于Pod与Node。
3. 存储类 (StorageClass)
- 定义:描述不同类型存储的方法。
- 功能:允许管理员为不同的存储后端提供和配置类别,用户可以基于这些类别创建PVC。
4. StatefulSet的存储管理
StatefulSet是管理有状态应用的控制器,它可以确保每个Pod都能够绑定到特定的PersistentVolume,这对于数据库和其他需要持久化存储的应用至关重要。
Kubernetes在网络和存储方面提供了高度的灵活性和可扩展性,能够适应不同的应用场景和需求。这些特性是Kubernetes支持复杂企业级应用的关键因素之一。
五、安全和合规
在Kubernetes环境中,确保集群安全和遵守合规标准是至关重要的。这一部分详细探讨Kubernetes中的安全机制,包括认证、授权、访问控制以及最佳安全实践。
认证、授权与访问控制
1. 认证 (Authentication)
- 机制:Kubernetes支持多种认证机制,如X.509证书、Bearer Tokens、OpenID Connect Tokens等。
- Kubeconfig:用于存储API服务器的访问凭证和连接信息。
- Service Accounts:专门为Pod中运行的应用程序创建的账户,由Kubernetes自动管理。
2. 授权 (Authorization)
- RBAC (Role-Based Access Control):基于角色的访问控制,通过角色和角色绑定来控制用户对Kubernetes资源的访问。
- ABAC (Attribute-Based Access Control):基于属性的访问控制,定义复杂的访问规则。
- Node Authorization:专门控制节点(kubelet)对API的访问。
3. 准入控制 (Admission Control)
- 定义:用于拦截(在认证和授权之后)对API的请求。
- 常用控制器:包括PodSecurityPolicies、ResourceQuotas、NamespaceLifecycle等。
安全最佳实践与策略
1. 集群安全
- API服务器安全配置:使用HTTPS、开启RBAC、限制访问来源等。
- 节点安全:保证kubelet的安全,限制对kubelet API的访问。
- 网络策略:使用网络策略隔离Pod和服务,防止未授权的跨服务访问。
2. Pod安全
- Pod安全策略:定义一组条件,Pod需要满足这些条件才能运行。
- 安全上下文:为Pod和容器配置权限和访问控制设置。
- 最小权限原则:只授予Pod运行所必需的权限。
3. 密钥和敏感数据管理
- Secrets:用于存储和管理敏感信息,如密码、OAuth令牌和SSH密钥。
- 加密-at-Rest:确保持久化存储的数据被加密。
4. 审计日志
- 审计:跟踪和记录集群中的活动,对安全事件进行分析。
- 策略:定义审核日志策略,决定记录哪些事件以及如何保留日志。
通过这些机制和最佳实践,Kubernetes提供了强大的工具来保护集群和应用程序免受未授权访问和攻击,同时确保了合规性和数据保密性。
六、高可用和灾难恢复
在Kubernetes集群管理中,实现高可用性和灾难恢复策略是至关重要的。这些机制确保在硬件故障、软件错误、网络问题等不可预测情况下,集群和应用能够持续运行或快速恢复。
集群的高可用配置
1. 控制平面的高可用
- 多节点控制平面:部署多个控制平面节点,以避免单点故障。
- 负载均衡器:在控制平面节点前设置负载均衡器,以分散请求。
- etcd集群:运行多个etcd实例,形成一个高可用的键值存储集群。
2. 工作节点的高可用
- 自动扩展和自愈:使用集群自动扩展器和自动修复策略确保足够的工作节点数量和健康状态。
- 跨区域部署:在不同的地理位置或云区域部署节点,以抵御区域性故障。
备份与恢复策略
1. 数据备份
- etcd备份:定期备份etcd数据,这对于恢复集群状态至关重要。
- 持久卷备份:对PersistentVolumes进行定期备份,以保证数据安全。
2. 集群资源备份
- Kubernetes资源备份:使用工具如Velero备份Kubernetes资源和配置,包括Deployments、Services等。
3. 灾难恢复
- 恢复计划:制定详细的灾难恢复计划,包括如何快速恢复集群和应用。
- 演练:定期进行灾难恢复演练,以验证和改进恢复流程。
4. 容灾策略
- 多集群部署:部署多个Kubernetes集群,作为彼此的备份,以保证至少有一个集群始终可用。
- 数据复制:跨集群复制关键数据和配置,以确保在主集群不可用时能够快速切换。
通过这些高可用和灾难恢复策略,Kubernetes能够最大限度地减少系统停机时间,保证业务连续性和数据完整性。这些策略对于运行关键业务应用的企业来说尤为重要。
七、监控和日志
监控和日志管理是Kubernetes集群管理中不可或缺的一部分,它们帮助管理员了解集群的健康状况,诊断问题,并确保集群的高效运行。这部分将深入探讨Kubernetes中的监控和日志系统。
集群监控工具和技巧
1. 资源和性能监控
- Prometheus:一个开源的监控和告警工具,广泛用于Kubernetes的资源和性能监控。
- Grafana:与Prometheus集成,提供了丰富的数据可视化选项。
- Heapster:(已废弃)曾经是Kubernetes的默认监控工具,现已被Metrics Server所替代。
- Metrics Server:用于收集集群中节点和Pod的资源使用数据。
2. 监控策略
- 基于阈值的告警:设置资源使用率等的阈值,当达到阈值时发送告警。
- 自定义监控和告警规则:利用Prometheus的强大查询语言和告警规则来定制监控策略。
日志管理和分析
1. 日志收集
- Elasticsearch、Fluentd和Kibana(EFK堆栈):一套流行的日志收集、存储和分析解决方案。
- Loki:一个更轻量级的日志聚合系统,专为Kubernetes设计,与Grafana紧密集成。
2. 日志策略
- 集中式日志收集:将所有节点和Pod的日志汇总到一个中心位置,便于分析和存储。
- 日志轮转和保留:自动删除旧日志,以管理存储空间和满足合规要求。
3. 日志分析
- 实时日志分析:提供实时的日志数据流,帮助快速定位问题。
- 日志查询和可视化:使用Kibana或Grafana对日志数据进行查询和可视化展示。
4. 审计日志
- Kubernetes审计:记录对Kubernetes API的请求,包括谁、什么时候、什么操作以及操作是否成功等信息。
通过这些监控和日志管理工具,Kubernetes管理员能够有效地监控集群状态,识别和解决问题,从而保证集群的稳定性和效率。这些系统对于维护大规模、复杂的Kubernetes集群至关重要。
关注【TechLeadCloud】,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人 如有帮助,请多关注 TeahLead KrisChang,10+年的互联网和人工智能从业经验,10年+技术和业务团队管理经验,同济软件工程本科,复旦工程管理硕士,阿里云认证云服务资深架构师,上亿营收AI产品业务负责人。
上一篇: 9U_VPX 信号处理器,用于传感器大数据的异构计算平台
下一篇: eslint 缓存配置-摘要
推荐阅读
-
K8s 技术全景:架构、应用和优化
-
企业大数据系统建设实践:技术、架构、实施和应用 I. 导言
-
openEuler郑州用户组成立!openEuler与hyperfusion携手共建河南地区用户生态 - 开幕致辞 超融合操作系统业务总经理、openEuler委员会成员蒋振华先生为本次活动致辞。 在本次活动的致辞中,他提到,作为openEuler社区早期的成员,超融合见证了openEuler从成立到在各行业商业落地,再到跨越生态拐点的过程,感谢openEuler提供了一个全产业链共同创新的平台,共同推动创新技术的商业落地。 同时,本次活动得到了郑州市郑东新区大数据管理局、郑州中原科技城投资服务局的大力支持。 郑东新区大数据管理局曹光远 在活动致辞中表示,openEuler的应用和*应用设施的深度优化,为郑东新区数字化转型提供了安全、可靠、高性能的技术基础;郑州中原科技城招商服务局王林表示,郑东新区欢迎所有openEuler生态相关企业扎根当地,围绕openEuler社区共同发展,形成合力。 openEuler社区及运维功能介绍 openEuler技术委员会委员胡峰 openEuler技术委员会委员胡峰先生在本次活动中介绍了openEuler社区目前发展的整体情况,并重点从技术层面介绍了openEuler的运维功能。 openEuler 晚会 胡峰先生介绍智能运维工具 A-Ops 和 openEuler gala、 阿波罗 Apollo、智能漏洞管理解决方案等新功能,以及涵盖各种运维场景的精品运维组件。在*交流环节,许多用户就目前使用的 openEuler 在*交流环节,许多用户就自己在使用openEuler过程中遇到的一些问题与胡峰先生进行了进一步的交流。 软硬结合,构建多样化算力操作系统 Hyperfusion 基于 openEuler 的基础上,结合自身软硬件技术积累,推出了富讯服务器操作系统 FusionOS FusionOS. FusionOS 首席架构师张海亮 分享了 FusionOS FusionOS首席架构师张海亮分享了FusionOS的软硬件协同优势、卓越的性能和可靠性,以及FusionOS在金融、运营商、*、互联网等行业的实践案例,引起了众多用户的兴趣,分享结束后,不少参会者就FusionOS的特点向讲师提问并进行了交流。
-
基于 NFC 的无线电池管理 BMS - ● 主动读取内部传感器:利用 NFC 技术,BMS 能够主动读取内部传感器的数据 [... 考虑车辆外使用案例中的空闲状态场景:NFC 技术可用于处理闲置状态下的电池组读取,例如在第二次生命转移期间进行存储。 主动诊断读取:在邻近系统中部署了 BMS 的情况下,使用 NFC 技术进行主动诊断读取。 (ii) 系统结构 系统架构如图所示,在建立安全通道之前,需要对设备进行身份验证。数据链路通信层由 NDEF 记录处理,而数据存储可以是离线的,也可以是数据库中的在线存储。活动和空闲状态的诊断读数取决于设备和数据方向,需要与外部 NFC 阅读器进行通信。软件架构分为三层,包括硬件抽象层(HAL)、中间层(中间件)和应用层。HAL 处理硬件驱动组件,中间件执行设备验证,而应用层则由开发人员根据安全漏洞和格式扩展*定义。 为确保安全,系统采用了一个安全模型,为 BMS 和主动诊断读取情况格式化应用数据。安全考虑因素包括设备相互验证、使用安全通道(加密和防篡改)以及确保电池组内读数的安全。 考虑到不同的 BMS 拓扑,包括集中式、调制式、分布式和分散式,系统需要满足设备相互验证和使用安全通道的要求。对于每种拓扑结构,都必须考虑将性能开销降至最低。电池是封闭的,对其进行物理攻击不可行或成本太高。外部攻击可能也很困难。基于对称或非对称加密技术的自动验证可用于保护电池组读数。安全协议在验证阶段和会话密钥确认阶段采用双密钥加密,以抵御攻击。中间件在数据格式验证、确认和处理中发挥关键作用,确保数据传输安全。 (iii) 唤醒模型设计
-
深入了解 Kubernetes (K8s) 在云原生架构中的关键作用和应用
-
InfoQ,谈谈百度开源高性能搜索引擎 Puck-Ben:Puck是团队长期研究和努力的成果,作为Puck的负责人,我对这个项目有着深深的热爱和执着,对我个人而言,它不仅仅是一个搜索引擎,而是代表着团队心血和智慧的结晶,它是我们对技术的追求,对创新的执着,也是我们对未来的期望和愿景,Puck的每一次升级和优化都记录着我们的成长和进步。这是我们对技术的追求,对创新的执着,也是我们对未来的期望和憧憬,帕克的每一次升级和优化都记录着我们的成长和进步。 我对帕克的未来充满期待。首先,我希望 Puck 能够在开发者社区得到广泛应用,同时得到社区的反馈,不断优化和改进。我期待看到更多的人参与到Puck的开发和使用中来,通过大家的共同努力,让Puck成为人工智能领域有影响力的工具。其次,我希望Puck能够不断创新和优化,保持技术领先地位,不仅要适应当前的技术需求,更要预测和引领未来的技术趋势。最后,我希望Puck能在更多的实际应用中实现自身价值,为人工智能在各行各业的应用提供有力支撑,推动科技发展。 访谈嘉宾简介: Ben,百度搜索内容技术部主任架构师,负责多模态内容理解、超大规模内容关系计算、内容处理与生成、模型优化等方向。 欢迎加入朋克技术交流群:913964818 本部门招聘ANN搜索工程师、模型优化工程师、分布式计算研发工程师等多个职位。欢迎勇于接受挑战、具有优秀分析和解决问题能力的人才加入我们。 招聘邮箱:tianyakun@baidu.com --END-- 推荐阅读
-
小红书大产品部架构 小红书产品概览--经过性能、稳定性、成本等多个维度的详细评估,小红书最终决定选择基于腾讯云星海自研硬件的SA2云服务器作为主力机型使用。结合其秒级的快速扩缩、超强兼容和平滑迁移能力,小红书在抵御上亿次用户访问、保证系统稳定运行的同时,也实现了成本的大幅降低。 星海SA2云服务器是基于腾讯云星海的首款自研服务器。腾讯云星海作为自研硬件品牌,通过创新的高兼容性架构、简洁可靠的自主设计,结合腾讯自身业务以及百万客户上云需求的特点,致力于为云计算时代提供安全、稳定、性能领先的基础架构产品和服务。如今,星海SA2云服务器也正在为越来越多的企业提供低成本、高效率、更安全的弹性计算服务。 以下是与小红书SRE总监陈敖翔的对话实录。 问:请您介绍一下小红书及其主要商业模式? 小红书是一个面向年轻人的生活方式平台,在这里,他们发现了向上、多元的真实世界。小红书日活超过 3500 万,月活跃用户超过 1 亿,日均笔记曝光量达 80 亿。小红书由社交平台和在线购物两大部分组成。与其他线上平台相比,小红书的内容基于真实的口碑分享,播种不止于线上,还为线下实体店赋能。 问:围绕业务发展,小红书的系统架构经历了怎样的变革和演进? 系统架构变化不大,影响最深的是资源开销。过去三年,资源开销大幅增加,同比增长约 10 倍。在此背景下,我们努力进行优化,包括很早就开始使用 K8S 进行资源调度。到 18 年年中,绝大多数服务已经完全实现了容器化。 问:目前小红书系统架构中的计算基础设施建设和布局是怎样的? 我们目前的建设方式可以简单描述为星型结构。腾讯云在上海的一个区是我们的计算中心,承载着我们的核心数据和在线业务。在外围,我们还有两个数据中心进行计算分流,同时承担灾备和线上业务双活的角色。 与其他新兴电子商务互联网公司类似,小红书的大部分计算能力主要用于线下数据分析、模型训练和在线推荐等平台。随着业务的发展,对算力的需求也在加速增长。
-
趣谈留言队列,搞清楚留言队列到底是什么!-说到消息队列,洪觉大概能猜到人们听到消息队列的反应,大致可以分为以下几类人。 第一类人,懵懵懂懂,刚上大学接触编程,还没用过消息队列,甚至还以为消息队列就是代码里面要新建一个List之类的;第二类人,听过消息队列,了解消息队列,但具体是什么还不是太明白,只知道一说到消息队列,脑海里马上出现了三组词,削峰、异步、解耦;第三类人,用过消息队列,对它有一定了解,但不知道为什么要这样设计,消息队列有什么样的前世今生,是如何演化到现在的模式的?**第四类人,已经对消息队列有了足够的了解,可以阅读本帖作为复习和温习。**你属于哪一类?无论你对消息队列了解多少,读完这篇文章后,我相信你都会有所收获。 什么是消息队列?我们为什么要使用消息队列?真的只是因为它看起来很勉强、很常用吗?当然不是,一项技术的出现往往是为了解决某种痛点,我们就从这个痛点出发,看看消息队列到底是为了解决什么问题而诞生的。 相信大家在工作之前,或者工作中接触单片机的次数会多一点,不管什么业务都一股脑塞进一个系统里,这种情况下接触消息队列的场景会比较少。但随着业务的增长,量上去了,单机系统就很难维护了,也扛不住并发量的增长,就需要把原来的单体应用拆分成多个服务。例如,牛奇网采用分布式架构,将原来的单体系统拆分成用户服务、题库服务、求职服务、论坛服务等,每个分布式节点都有一个集群,保证高可用性。 那虽然在这样的微服务架构下,如果某个核心业务并发量过大,系统就扛不住了。比如淘宝、淘票票、拼多多、京东等电商场景中的支付场景,你在某宝下单并支付后,调用支付服务,完成支付后,还需要更新订单的状态,这个时候就需要调用订单服务,那我们平时也下单,除了简单完成这些操作外,还会给你相应的积分;商家也会收到订单消息,并给您发送旺旺消息,确认订单无误;同时,也会给您发送消息,确认订单无误。确认订单无误;同时您还可以查看您的物流状态;还有系统为了给您推荐更适合您的商品,会根据您的订单做类似的推荐等等,我说的这些都是当我们下单后,肉眼可以感知到系统所做的动作。 **一个支付动作如果还需要调用那么多服务,等他们响应成功,最后再告诉用户你支付成功了,用户在系统中的整个体验会非常糟糕。**设想一下,假设请求服务+处理请求+响应总共需要 50ms,我们上面列出的场景:支付服务、订单服务、积分服务、商家服务、物流服务、推荐服务,总共需要 300ms。
-
实时音频和视频技术的发展与应用-1.1 双重音频和视频 从架构上看,双人音视频系统相对简单明了。红点代表房间信令服务,房间信令服务的主要功能是管理房间信息,实现容量协商和上下行链路的质量调节,例如当下行信道发生拥塞时,上行线路的码率和分辨率会降低。 在传输信道层面,我们的策略是优先直连,在跨区域、跨运营商的情况下,我们会选择单中转或双中转信道,在策略上尽量保持直连和中转信道同时存在,当其中一个信道的质量不好时,系统会自动切断到另一个信道的流量。 1.2 多人音视频 多人视频通话的产品形态是整个房间不超过 50 人,大盘平均房间规模约为 4.x 人,房间内部最多满足一个大视频和三个小视频(四屏)。根据这一条件,我们在架构中采用了典型的 SFU 小房间设计。 上图中的红点代表房间信令服务,主要用于房间管理和状态信息同步。房间管理主要包括用户列表的管理,例如哪些用户打开了视频/音频,我看了谁,谁看了我,这些都是基于房间管理的信息,然后房间信令服务会将这些信息同步到媒体传输服务进行数据分发。 房间服务的另一个作用是房间级容量协商和质量控制,例如,房间里的每个人一开始都支持 H.265 编码,当某个时刻进来一个只支持 H.264 编码的用户时,房间里所有的上游主播就必须把 H.265 切成 H.264。还有一种情况是,房间里有一定比例的人下行链路信道质量较差,这会导致上行链路房间质量下降。 在传输层面,我们采用的是单层分布式媒体传输网络,大家都选择中转方式,不区分双人和多人,采用 Full-Mesh 传输机制将所有数据推送过去,比如一个节点上的人并不都看另外两个人的视频,但还是会将视频推送给他们。
-
41 个下载免费 3D 模型的最佳网站-使用说明:使用权限可能因型号而异。因此,在下载文件之前,请仔细检查每个下载页面上的许可证和使用权限。 17. Clara.io Clara.io 是一个创建 3D 内容的全球平台,也是一个培养新 3D 艺术家的社区。Clara.io 提供+100,000个免费的3D模型,包括OBJ,Blend,STL,FBX,DAE,Babylon.JS,Three.JS格式,用于 Clara.io,Unity 3D,Blender,Sketchup,Cinema 4D,3DS Max和Maya。 使用说明:免费,标准和专业帐户仅供个人使用,如果您需要将 clara.io 用于商业用途,请与销售团队联系。 18. 3DExport 3DExport是一个市场,您可以在其中购买和销售用于CG项目的3D模型,3D打印模型和纹理。它提供15 +不同的3D格式供下载,如3DS MAX(.max),Cinema4D(.c4d),Maya(.mb,.ma),Lightwave(.lwo),Softimage(.xsi),Wavefront OBJ(.obj),Autodesk FBX(.fbx)等。它还提供15种不同的语言! 使用说明:免费下载仅供个人和非商业用途。 19. 3D Warehouse 3D Warehouse是一个开放的库,允许用户共享和下载SketchUp 3D模型,用于建筑,设计,施工和娱乐!任何人都可以免费制作,修改和重新上传内容到3D仓库,您可以找到任何您能想到的东西,如家具,电子产品,室内产品等。 使用说明:3D Warehouse中的所有模型都是免费的,因此任何人都可以下载文件以用于SketchUp甚至其他软件,如AutoCAD,Revit和ArchiCAD。 20. CadNav.com CadNav是CGI平面设计师和CAD / CAM / CAE工程师的在线3D模型库,我们提供超过50000 +免费3D模型和CAD模型下载。在CadNav网站上,您可以下载高质量的多边形网格3D模型,3D CAD实体对象,纹理,Vray材料,3D作品,CAD图纸等。 使用说明:免费下载仅供个人和非商业用途。 21. All3dfree.net 就像网站名称一样,它提供免费的3D模型,还包括Vray材料,CAD块,2d和3d纹理集合,无需注册即可免费下载。它是不断更新的,因此您可以查找或请求3DS,MAX,C4D,skp,OBJ,FBX,MTL等格式的模型。 使用说明:所有资源均不允许用于商业用途,否则您将承担责任。 22. Hum3D 自2005年以来,Hum3D帮助来自3多个国家的80D艺术家节省3D建模时间,并制作逼真的3D模型,用于电影,视频游戏,AR应用程序和可视化。所有模型均由首席3D艺术家进行验证,他们检查其是否符合专业要求和最新的3D建模标准。 使用说明:免费下载仅供个人和非商业用途。 23. Artist-3D.com 艺术家-3D 库存的免费 3D 模型下载按通用类别排序。它为人体解剖学、汽车、家具、火箭、卫星等模型提供 AutoDesk 3DS Max 格式。您还可以在浏览他们的网站时找到教程和类似类型的建模。 使用说明:使用权限可能因型号而异。因此,在下载文件之前,请仔细检查每个下载页面上的许可证和使用权限。 24. Free the models 就像本网站的标题一样,它为3d应用程序和3d游戏引擎提供免费的内容模型。您可以为您的任何项目找到许多有趣且有用的模型!它提供3ds,wavefront,bryce,poser,lightwave,md2和unity3d格式的模型。还有一个很棒的纹理集合,可以在您最喜欢的建模和渲染程序中使用。 使用说明:您从这里下载的所有内容都可以免费使用,除非它不能包含在另一个免费的网络或CD收藏中,也不能单独出售。否则,您可以在商业游戏,3D应用程序或渲染作品中使用它。您不必提供信用,但如果您这样做,那就太好了。 25. Resources.blogscopia 本网站由一家名为Scopia的公司创建。他们制作3D图像和视频,您可以找到许多为CGI工作的信息架构设计的模型,所有这些都可以在现实生活中使用。您可以免费下载它们,但是,如果您想一次下载它们,您可以支付 3 到 9 欧元。 使用说明:您可以免费下载模型部分的所有文件。每个压缩文件都包含您也可以在此处找到的许可证。基本上,您可以对文件执行任何操作。唯一的限制是不归属于Scopia的重新分发。 26.ambientCG 1000+公共领域PBR材料适合所有人!环境CG是使用许多不同的方法和资产类型创建的,例如照片纹理(PBR),贴花(PBR),图集(PBR),照片纹理(普通),物质存档(SBSAR),雕刻画笔,3D模型和地形。您可以在所有项目中*使用它们! 使用说明:在 ambientCG 上提供下载的所有 PBR 材料、画笔、照片和 3D 模型均根据知识共享 CC0 1.0 通用许可提供。您可以复制、修改、分发和执行作品,即使是出于商业目的,也无需征得许可。信用将不胜感激。 不要满足于平庸的大理石纹理 - 立即使用我们的免费PBR大理石纹理升级您的3D设计。 27.Pixar One Twenty Eight 这是一个提供官方动画行业经典纹理的网站:皮克斯,创建于 1993 年,该纹理库包括 128 个重复纹理,现在免费提供。 它包含您来到的纹理,包括砖块和动物毛皮。肯定会有一些你可以使用的东西。 使用说明:皮克斯动画工作室的《Pixar One Twenty Eight》根据知识共享署名4.0国际许可协议进行许可。即使出于商业目的,您也可以重新混合、调整和构建您的作品,只要您以相同的条款对新创作进行信用和许可。 访问数以千计的免费纹理并提升您的设计游戏 - 立即开始下载! 28. 3DXO 即使有近 620 个免费贴纸可供下载,3DXO 也不是最大的资源,但它的内容非常有用,不需要注册。无论是简单的墙壁或地板,还是一些奇怪的小东西,您都需要的纹理都可以在此网站上看到。 使用说明:使用权限可能因型号而异。因此,在下载文件之前,请仔细检查每个下载页面上的许可证和使用权限。 29. 3DModelsCC0 3DModelsCC0 与其他产品的不同之处在于它包含超过 250+ 个高质量 3D 模型,并且本网站上的所有内容都是免费的,完全是公共领域!使用我们的模型时无需信用或归属! 使用说明:为每个人提供完全免费的公共领域内容。 30.Sketch up texture club Sketchup Texture Club是一个非营利性的教育和信息门户网站,由3D社区的图像促进协会管理,特别强调面向学生和建筑和室内设计专业人士的可视化和渲染技术,以及所有正在学习3D可视化的人。 使用说明:您无需支付版税或使用费。纹理可以免费下载和使用。不允许将纹理作为竞争产品出售或重新分发,即使图像被修改也是如此。 31. FlippedNormals FlippedNormal 是一个提供计算机图形和 3D 资产的市场,您可以找到许多用于雕刻、建模、纹理、概念艺术、3D 模型、游戏资产或课程的高级资产! 使用说明:使用权限可能因型号而异。因此,在下载文件之前,请仔细检查每个下载页面上的许可证和使用权限。 32. NASA 3D NASA 3D网站是一个在线门户,提供与太空和各种NASA任务相关的大量三维模型和模拟。该网站是用户友好的,并提供有关每个型号的详细信息。该网站允许用户探索和下载几种不同格式的模型,包括 OBJ、STL 和 FBX,只需单击下载按钮即可。 使用说明: 要下载模型,只需单击模型页面上的下载按钮并选择所需的格式。 33. 3DAGOGO (Astroprint) 3DAGOGO 是一个提供广泛 3D 模型的网站,包括角色、车辆和建筑物。3DAGOGO 的独特功能之一是它专注于适合 3D 打印的模型,使其成为希望创建物理原型或模型的设计师的绝佳资源。要使用 3DAGOGO,设计师只需在网站上搜索他们正在寻找的模型类型,然后下载 STL 格式的文件。 使用说明: 要使用 3DAGOGO,只需搜索所需的 3D 模型类型并下载 STL 格式的文件。根据需要自定义模型,并确保在将其用于商业目的之前检查使用权限。 34. FreeCAD FreeCAD是一款了不起的3D建模软件,可让您在计算机上创建令人难以置信的3D设计。该软件可免费下载和使用,它提供了广泛的工具和功能,可用于创建用于各种目的的3D模型。 该网站易于浏览,您可以找到开始使用FreeCAD的所有必要信息。此外,该网站还提供一系列教程和指南,可帮助您了解 3D 建模的来龙去脉。 使用说明: 要下载模型,请访问网站并从库中选择所需的模型。该网站还提供了一系列使用该软件的教程和指南。 35. Pinshape Pinshape是一个提供一系列3D打印模型的网站。网站上提供的型号质量很高,因此您可以确保您的最终印刷产品看起来很棒。该网站提供了广泛的模型,包括从家居用品到小雕像和珠宝的所有物品。 但这还不是Pinshape所能提供的全部!该网站还允许用户上传和共享自己的3D模型。这意味着您不仅可以下载出色的模型,还可以通过分享自己的设计为社区做出贡献。此外,Pinshape 提供了一系列自定义选项,因此您可以调整和调整模型以满足您的特定需求。 使用说明: 要下载模型,请在网站上创建一个帐户,搜索所需的模型,然后单击下载按钮。该网站还为每种型号提供了一系列定制选项。 36.Yeggi Yeggi 提供了大量免费的 3D 模型,您可以下载各种格式的模型,例如 STL、OBJ 和 FBX。该网站易于使用,您可以按关键字、类别或特定网站搜索模型。 Yeggi 对于任何寻找 3D 模型的人来说都是一个很好的资源。它提供了大量的模型集合,从日常物品到复杂的机械,以及介于两者之间的一切。该网站的收藏量在不断增长,每天都有新的型号增加。 使用说明: 要下载模型,请在网站上搜索所需的模型,然后单击下载按钮。该网站还提供指向托管模型的原始网站的链接。 37. Open3DModel 来自开放3D模型的图像 Open3DModel具有各种类别的模型,包括建筑,车辆和角色。无论您需要建筑物,汽车还是人的3D模型,都可以在此网站上找到。 该网站易于浏览,您可以按类别或关键字搜索模型。每个模型都附带预览图像和详细信息,例如文件格式、大小和多边形数量。此信息可以帮助您选择适合您需求的模型。 使用说明: 要下载模型,请访问网站,从库中选择所需的模型,然后单击下载按钮。 使用最好的 3D 资产管理工具简化您的 3D 制作流程。立即试用它们,将您的 3D 项目提升到一个新的水平! 38. 3DExport 对于那些为其 3D 设计项目寻找 3D 模型、纹理和其他资源的人来说,该平台是一个很好的资源。该网站有大量模型可供选择,包括 3D 打印对象、游戏资产等。用户可以按类别、文件格式或价格范围浏览,以找到适合其项目的完美资源。此外,3DExport 还提供一系列教程和其他 3D 资源,以帮助用户提高技能并创建更令人印象深刻的设计。 使用说明: 要使用 3DExport,只需创建一个帐户并浏览可用型号。您可以按类别、格式和价格进行搜索,以找到所需的型号。找到喜欢的模型后,只需下载它并开始在您的项目中使用它。 39.Blend Swap Blend Swap是一个社区驱动的市场,提供与Blender软件兼容的各种免费3D模型。该平台允许用户共享和下载模型、纹理和其他资产,以便在他们的项目中使用。 使用说明: 创建免费帐户后,您可以浏览社区上传的大量3D模型。当您找到要使用的一个时,只需下载它并将其导入您选择的 3D 软件即可。 40. 3DShook 3DShook 是一个高级 3D 模型市场,提供一系列用于建筑、游戏等各个行业的高质量模型。该平台提供基于订阅的模型,具有不同的定价计划,允许用户访问一系列模型。 使用说明: 注册免费帐户后,只需浏览3D模型库,选择您喜欢的模型,然后以您需要的格式下载它们。 41. Smithsonian X 3D 史密森尼 X 3D 对于正在寻找历史文物和文物的高质量 3D 模型的设计师来说,这是一个独特的资源。该平台提供了大量3D模型,这些模型是根据史密森尼博物馆和研究中心中的真实物体扫描创建的。 使用说明: