【Apollo】Apollo的入门介绍

news2024/10/3 0:33:32

在这里插入图片描述

阿波罗是百度发布的名为“Apollo(阿波罗)”的向汽车行业及自动驾驶领域的合作伙伴提供的软件平台
帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。
百度开放此项计划旨在建立一个以合作为中心的生态体系,发挥百度在人工智能领域的技术优势,促进自动驾驶技术的发展和普及。 而将这个计划命名为“Apollo”计划,就是借用了阿波罗登月计划的含义。

💓博主csdn个人主页:小小unicorn
⏩专栏分类:Apollo的学习记录
🚚代码仓库:小小unicorn的代码仓库🚚
🌹🌹🌹关注我带你学习编程知识

Apollo的入门介绍

  • Apollo
    • 简介:
    • Apollo设计:
      • 基础模型:
      • 架构模块:
      • 服务端设计:
      • 客户端设计:
  • 配置中心:
    • 背景
    • 配置分类和场景
    • 开关驱动开发
  • Apollo配置中心概念
    • 优点
    • 四个维度
    • 本地缓存
  • Apollo和SpringCloudConfig的对比
  • 意见反馈:

自动驾驶是近年来备受关注的领域之一,它代表了汽车行业的一次革命性变革。本文将深入探讨自动驾驶的定义、技术和未来发展。我们将介绍自动驾驶的基本原理,涵盖感知、决策和控制等关键技术,并探讨自动驾驶在交通安全、交通效率和出行体验等方面的潜在影响。通过这篇博文,读者将对自动驾驶有一个全面的了解。

Apollo

简介:

阿波罗是百度发布的名为“Apollo(阿波罗)”的向汽车行业及自动驾驶领域的合作伙伴提供的软件平台。

Apollo(阿波罗)是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

Apollo设计:

基础模型:

1.用户在配置中心对配置进行修改并发布
2.配置中心通知Apollo客户端有配置更新
3.Apollo客户端从配置中心拉取最新的配置、更新本地配置并通知到应用
在这里插入图片描述

架构模块:

在这里插入图片描述
1.Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端
2.Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)
3.Eureka提供服务注册和发现,为了简单起见,目前Eureka在部署时和Config Service是在一个JVM进程中的
4.Config Service和Admin Service都是多实例、无状态部署,所以需要将自己注册到Eureka中并保持心跳
5.在Eureka之上架了一层Meta Server用于封装Eureka的服务发现接口
6.Client通过域名访问Meta Server获取Config Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Client侧会做load balance、错误重试
7.Portal通过域名访问Meta Server获取Admin Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Portal侧会做load balance、错误重试
8.为了简化部署,我们实际上会把Config Service、Eureka和Meta Server三个逻辑角色部署在同一个JVM进程中

服务端设计:

在这里插入图片描述
上图简要描述了配置发布的大致过程:

1.用户在Portal操作配置发布
2.Portal调用Admin Service的接口操作发布
3.Admin Service发布配置后,发送ReleaseMessage给各个Config Service
4.Config Service收到ReleaseMessage后,通知对应的客户端

客户端设计:

在这里插入图片描述
1.客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送。(通过Http Long Polling实现)

2.客户端还会定时从Apollo配置中心服务端拉取应用的最新配置。
2.1这是一个fallback机制,为了防止推送机制失效导致配置不更新
2.2客户端定时拉取会上报本地版本,所以一般情况下,对于定时拉取的操作,服务端都会返回304 - Not Modified
2.3定时频率默认为每5分钟拉取一次,客户端也可以通过在运行时指定System Property: apollo.refreshInterval来覆盖,单位为分钟。

3.客户端从Apollo配置中心服务端获取到应用的最新配置后,会保存在内存中

4.客户端会把从服务端获取到的配置在本地文件系统缓存一份
4.1在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置

5.应用程序可以从Apollo客户端获取最新的配置、订阅配置更新通知

配置中心:

背景

在实际开发中都会与配置打交道,举个简单例子,我们开发项目肯定会连接数据库,mysql也好oracle也好。那么我们 本地环境 和 线上环境 连接的数据肯定是不一样的,

那如果没有配置中心,我们要做的就是在发布前把本地数据库配置信息改成线上环境,如果仅仅是切换数据库那倒还好,但随着程序功能的日益复杂,程序的配置日益增多比如,各种功能的开关、参数的配置、服务器的地址。同时对程序配置的期望值也越来越高:配置修改后 实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制。在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。

Apollo配置中心应运而生!

配置分类和场景

在现代开发中配置的分类还是蛮多的,下面借用一张图,来看下目前比较常见的分类及场景。
在这里插入图片描述

开关驱动开发

在我们实际开发业务中,开关这个概念其实是非常常见的,有些时候是需要用户在页面去进行开关操作,那么我们一般数据库新建配置表来存储用户操作的开关。

但有些时候是不需要用户去操作的,只需我们后台开发人员进行配置开关的,那其实就不需要在数据库去建一个配置表,而是通过配置中心就可以完成了。

Apollo配置中心概念

Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。

优点

Apollo作为为配置中心,有着非常多的优点。
在这里插入图片描述

四个维度

Apollo支持4个维度管理Key-Value格式的配置:

1application (应用)
2environment (环境)
3cluster (集群)
4namespace (命名空间)

1、application

1、Apollo 客户端在运行时需要知道当前应用是谁,从而可以根据不同的应用来获取对应应用的配置。

2、每个应用都需要有唯一的身份标识,可以在代码中配置app.id 参数来标识当前应用,Apollo 会根据此指来辨别当前应用。

2、environment

在实际开发中,我们的应用经常要部署在不同的环境中,一般情况下分为 开发、测试、生产 等等不同环境,不同环境中的配置也是不同的,在 Apollo 中默认提供了四种环境:

FAT:功能测试环境
UAT:集成测试环境
DEV:开发环境
PRO:生产环境

在程序中如果想指定使用哪个环境,可以配置变量 env 的值为对应环境名称即可。

3、cluster

1、一个应用下不同实例的分组,比如典型的可以按照数据中心分,把上海机房的应用实例分为一个集群,把北京机房的应用实例分为另一个集群。

2、对不同的集群,同一个配置可以有不一样的值,比如说上面所指的两个北京、上海两个机房设置两个集群,都有 mysql 配置参数,其中参数中配置的地址是不一样的。

4、namespace

一个应用中不同配置的分组,可以简单地把 namespace 类比为不同的配置文件,不同类型的配置存放在不同的文件中,如数据库配置文件,RPC 配置文件等。

熟悉 SpringBoot 的都知道,SpringBoot 项目都有一个默认配置文件 application.yml,如果还想用多个配置,可以创建多个配置文件来存放不同的配置信息,通过指定 spring.profiles.active 参数指定应用不同的配置文件。这里的 namespace 概念与其类似,将不同的配置放到不同的配置 namespace 中。

Namespace 分为两种权限,分别为:

1.public(公共的): public权限的 Namespace,能被任何应用获取。
2.private(私有的): 只能被所属的应用获取到。一个应用尝试获取其它应用 private 的 Namespace,Apollo 会报 “404” 异常。

本地缓存

Apollo客户端会把从服务端获取到的配置在 本地文件系统缓存 一份,用于在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置,不影响应用正常运行。

本地缓存路径默认位于以下路径,所以请确保 /opt/data或C:\opt\data\目录存在,且应用有读写权限。

Mac/Linux: /opt/data/{appId}/config-cache
Windows: C:\opt\data{appId}\config-cache
本地配置文件会以下面的文件名格式放置于本地缓存路径下:

{appId}+{cluster}+{namespace}.properties

Apollo和SpringCloudConfig的对比

在这里插入图片描述

总结:

1、SpringCloudConfig优势是对SpringBoot原生支持,且是SpringCloud组件。缺点是 无界面管理,且需要git,SpringCloudBus、Mq支持其动态更新。
2、Apollo优势是技术栈单一,仅需要Mysql就可以支持动态更新配置,便于维护。缺点是不是SpringCloud体系,虽然开源,版本更新也活跃,但是对SpringCloud的支持没有SpringCloudConfig的好。

意见反馈:

如果您在学习的过程中,遇到任何问题,请在【开发者社区】建立的 反馈意见收集问答页面,反馈相关的问题。我们会根据反馈意见对文章进行迭代优化。

社区官网:Apollo开发者社区
另外还有活动任务《星火培训》:感知训练营
感兴趣的可以加入学习。

文章到这里就要告一段落了,有更好的思路或问题的,欢迎留言评论区。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/983077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c语言 3.0

💂 个人主页: 程序员爱摸鱼🤟 版权: 本文由【程序员爱摸鱼】原创、在CSDN首发、需要转载请联系博主💬 如果文章对你有帮助、欢迎关注点赞收藏(一键三连)哦💅 想寻找共同成长的小伙伴,可以互粉哦 💬文章目录…

某堡垒机SQL注入漏洞

声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 一、概述 中远麒麟堡垒机能够提供细粒度的访问控制,最大限度保护用户资…

前后端分离项目-基于springboot+vue的it职业生涯规划系统的设计与实现(内含代码+文档+报告)

it职业生涯规划系统在jdk环境中,使用Java语言进行编码,使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务。总之,it职业生涯规划系统集中管理信息,有着保密性强,效率高,存储空间大…

xctf攻防世界 MISC之CatFlag

0x01.进入环境,下载附件 拿到的是一个无后缀的flag文件,用winhex打开后发现是奇奇怪怪的乱码,用kali的strings搜索也没找到flag情况。 0x02.问题分析 题目提示如图: 让直接cat就行,在kali中直接尝试输入&#xff1a…

百度云智大会:科技与创新的交汇点

​ 这次的百度云智大会,可谓是亮点云集—— 发布了包含42个大模型、41个数据集、10个精选应用范式的全新升级千帆大模型平台2.0,发布首个大模型生态伙伴计划,而且也预告了文心大模型4.0的发布,大模型服务的成绩单也非常秀&#x…

198/213动态规划之打家劫舍系列

这两天在学习的时候,发现有个打家劫舍的题目,有意思的很,分享给大家。 基础题目 题目内容 198. 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互…

Navicat 携手华为云 GaussDB,联合打造便捷高效的数据库开发和建模工具方案

近日, Navicat Premium 顺利完成与华为云 GaussDB的兼容性测试认证,并获得华为云授予的技术认证书。 ​ 合作 Navicat 作为华为云 GaussDB 生态工具合作伙伴以及 Gocloud 合作伙伴,此次合作旨在通过Navicat 多年来在数据库开发管理工具上的积…

uniapp 下拉框数据回显的问题

问题 : 现在是下拉框数据回显不了, 绑定的v-model 原因 : uniui 下拉框数据绑定要是 value text 这种格式的 解决办法: 将获取到的后端数据 转换为 需要的格式 ,再进行绑定 下拉框的数据 遍历

08.SCA-CNN

目录 前言泛读摘要IntroductionRelated Work 精读Spatial and Channel-wise Attention CNNOverviewSpatial AttentionChannel-wise AttentionChannel-SpatialSpatial-Channel ExperimentsDataset and Metric设置 评估Channel-wise Attention(问题1)评估M…

VBA实现语料或术语表奇偶行分列和双列合一

一、问题的提出 日常的双语语料处理或者术语格式转化过程中经常要用到下面的操作: 1.在Excel中把一列双行即上下对照的形式改为左右对照。如下图所示,把A转化为B这种样式。 2. 把B这种左右对归照转化为A这种上下对照样式。 二、问题的解决 这个问题看…

腾讯汤道生:超千亿参数 超2万亿tokens 腾讯混元大模型向行业全面开放

9月7日,2023腾讯全球数字生态大会在深圳宝安举行。腾讯集团高级执行副总裁、云与智慧产业事业群CEO汤道生表示,腾讯将迈入“全面拥抱大模型”时代:“以大模型生成技术为核心,人工智能正在成为下一轮数字化发展的关键动力&#xff…

修改this.$notify通知的样式

注意:样式要写在全局里,不能写在scoped里

SAP MM学习笔记28- 供给元(供货源)决定

前面已经努力的学习了 购买发注,入库,请求书照合 等功能,还是蛮多内容的哈。 剩下的功能,比如 右侧的 所要量决定,供给元决定,仕入先选择 还没学。 从这章开始,要开始学习它们了。 上一章学了…

从零开始搭建vite4.0-vue3.0项目

目录 前言 项目地址 项目初始化 git初始化 别名配置 解决vscode报错 vue-router安装 pinia安装 环境配置 axios安装 element-plus按需引入 eslint与prettier安装 scss安装 stylelint配置 代码提交规范配置 husky与lint-stage配置 前言 pnpm和npm的命令行完全一…

Ae 效果:CC Radial Blur、CC Radial Fast Blur

模糊和锐化/CC Radial Blur Blur & Sharpen/CC Radial Blur CC Radial Blur(CC 径向模糊)可以创建径向缩放以及径向旋转等模糊效果。 ◆ ◆ ◆ 效果属性说明 Type 类型 径向模糊的类型包括两大类:前三个属于径向缩放模糊,后…

Kubernetes----基于kubeadm工具在CentOS7.9虚拟机上部署一主两从类型的Kubernetes集群环境

【原文链接】Kubernetes----基于kubeadm工具在CentOS7.9虚拟机上部署一主两从类型的Kubernetes集群环境 文章目录 一、虚拟机环境准备1.1 准备三台CentOS操作系统的虚拟机1.2 修改主机名1.3 确认CentOS的版本符合要求1.4 配置地址解析1.5 配置时间同步1.6 关闭防火墙1.7 禁用se…

【用unity实现100个游戏之9】使用Unity制作类八方旅人、饥荒风格的俯视角2.5D游戏

前言 2.5D游戏 是一种介于二维和三维之间的游戏形式。它通常在二维平面上展示游戏内容,但利用三维技术来实现更加逼真的图像效果。 在2.5D游戏中,角色和环境通常是以平面的形式呈现,但可以在垂直方向上移动。这意味着玩家可以在一个相对较薄…

Vert.x 源码解析(4.x)——ClusteredEventBus入门使用和源码解析

目录 1. 简介 如果哪里有错误,欢迎指正。 如果哪里有不明白的地方,欢迎讨论 Vert.x集群器 Vert.x 集群管理器的可插拔性,可轻易切换至其它的集群管理器。 Vert.x 集群管理器包含以下几项功能: 发现并管理集群中的节点管理集…

node.js下载安装使用

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

WangEditor在Vue前端的应用

1、在Vue项目中安装WangEditor 对于Vue2: npm install wangeditor/editor-for-vue --save 或者 yarn add wangeditor/editor-for-vue 对于Vue3: npm install wangeditor/editor-for-vuenext --save 或者 yarn add wangeditor/editor-for-vuenext 2、将Wa…