Nacos架构&原理
数据等功能。 元数据管理:提供元数据 CURD 和打标能力,为实现上层流量和服务灰度非常关键。 19 > Nacos 架构 内核层 插件机制:实现三个模块可分可合能力,实现扩展点 SPI 机制,用于扩展自己公司定制。 事件机制:实现异步化事件通知,SDK 数据变化异步通知等逻辑,是 Nacos 高性能的关键部分。 日志模块:管理日志分类,日志级别,日志可移植性(尤其避免冲突),日志格式,异常码+帮 定的接口,实现用户自定义的逻辑。在 Server 的设计中,用户扩展是比较审慎的。因为用户扩展 代码的引入,可能会影响原有 Server 服务的可用性,同时如果出问题,排查的难度也是比较大的。 设计良好的 SPI 是可能的,但是由此带来的稳定性和运维的风险是需要仔细考虑的。在开源软件中, 往往通过直接贡献代码的方式来实现用户扩展,好的扩展会被很多人不停的更新和维护,这也是⼀ 种比较好的开发模式。Zookeeper ⼀些功能,如果能够通过精心的设计开放给用 户在运行时去扩展,那么为什么不做呢?毕竟增加扩展的支持并不会让原有的功能有任何损失。 所有产品都应该尽量支持用户运行时扩展,这需要 Server 端 SPI 机制设计的足够健壮和容错。 Nacos 在这方面已经开放了对第三方 CMDB 的扩展支持,后续很快会开放健康检查及负载均衡等 核心功能的用户扩展。目的就是为了能够以⼀种解耦的方式支持用户各种各样的需求。0 码力 | 326 页 | 12.83 MB | 10 月前3
Comprehensive Rust(Ukrainian) 202412поширені периферійні пристрої мікроконтролерів: • GPIO • PWM • Таймери затримки • Шини та пристрої I2C і SPI Аналогічні трейти для байтових потоків (наприклад, UART), CAN-шини та ГВЧ (RNGs) і розбиті на embedded-io термінах цих трейтів, наприклад драйверу акселерометра може знадобитися кземпляр пристрою I2C або SPI. • Трейти охоплюють використання периферійних пристроїв, але не їх ініціалізацію чи конфігурацію, загальний контролер переривань Arm. • Використовуйте переривання RTC, яке підключено до GIC як IntId::spi(2). • Коли переривання ввімкнено, ви можете перевести ядро в режим сну за допомогою arm_gic::wfi()0 码力 | 396 页 | 1.08 MB | 11 月前3
Comprehensive Rust(Persian ) 202412� � � : • GPIO • PWM • � � � � � � � � � � � � � � • � � � � � � � � � � � � � � � � � � I2C � SPI � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ) � � � � � UART ( � � � � � � � � � � CAN � � � � � � � . � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � I2C � � SPI � � � � � � � � � � � � � . • � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ) peripherals Controller � � � � � � � � � � � . • � � � � � � RTC � � � � � � � � � � � � � � � � � � � � IntId::spi(2 ( � � GIC � � � � � � � . • � � � � � � � � � � � � ) interrupt ( � � � � � � � � � � � � � � �0 码力 | 393 页 | 987.97 KB | 11 月前3
Comprehensive Rust(English) 202412number of traits covering common microcontroller peripherals: • GPIO • PWM • Delay timers • I2C and SPI buses and devices Similar traits for byte streams (e.g. UARTs), CAN buses and RNGs and broken out then implement drivers in terms of these traits, e.g. an accelerometer driver might need an I2C or SPI device instance. • The traits cover using the peripherals but not initialising or configuring them the Arm Generic Interrupt Controller. • Use the RTC interrupt, which is wired to the GIC as IntId::spi(2). • Once the interrupt is enabled, you can put the core to sleep via arm_gic::wfi(), which will cause0 码力 | 382 页 | 1.00 MB | 11 月前3
Comprehensive Rust(简体中文) 202412embedded-hal crate 提供许多适用于常见微控制器外围设备的 trait。 • GPIO • ADC • I2C、SPI、UART、CAN • RNG • 定时器 • 监控定时器 然后,其他 crate 可以根据这些 trait 实现驱动程序,例如加速度计驱动程序可能需要通过 I2C 或 SPI 总 线实现。 • 还有适用于许多微控制器以及其他平台(例如 Raspberry Pi 上的 Linux)的实现。 _进行扩展(如有时间):_启用并处理由 RTC 匹配产生的中断。可以使用 arm-gic crate 中提供的 驱动程序来配置 Arm 通用中断控制器。 • 请使用 RTC 中断,将其作为 IntId::spi(2) 连接到 GIC。 • 启用中断后,可以通过 arm_gic::wfi() 让核心进入休眠状态,直到它收到中断信号。 下载练习模板并在 rtc 目录中查找以下文件。 src/main.rs: PL031_BASE_ADDRESS: *mut u32 = 0x901_0000 as _; /// The IRQ used by the PL031 RTC. const PL031_IRQ: IntId = IntId::spi(2); extern "C" fn main(x0: u64, x1: u64, x2: u64, x3: u64) { 300 // SAFETY: `PL011_BASE_ADDRESS`0 码力 | 359 页 | 1.33 MB | 11 月前3
Comprehensive Rust(Español) 202412number of traits covering common microcontroller peripherals: • GPIO • PWM • Delay timers • I2C and SPI buses and devices Similar traits for byte streams (e.g. UARTs), CAN buses and RNGs and broken out then implement drivers in terms of these traits, e.g. an accelerometer driver might need an I2C or SPI device instance. • The traits cover using the peripherals but not initialising or configuring them interrupciones genérico (GIC) de Arm. • Utiliza la interrupción de RTC, que está conectada al GIC como IntId::spi(2). • Después de habilitar la interrupción, puedes poner el núcleo en suspensión mediante arm_gic::wfi()0 码力 | 389 页 | 1.04 MB | 11 月前3
Comprehensive Rust(繁体中文)embedded-hal Crate 提供多個特徵,涵蓋常見的微控制器周邊裝置。 254 • GPIO • ADC • I2C、SPI、UART、CAN • RNG • 計時器 • 看門狗計時器 其他 Crate 隨後會根據這些特徵實作驅動程式,例如加速計驅動程式可能需要實作 I2C 或 SPI 匯流排。 • 許多微控制器和其他平台 (例如 Raspberry Pi 上的 Linux) 都有相應的實作項目。 3. 擴充功能 (如有時間):啟用並處理因 RTC 比對而產生的中斷情形。您可以使用 arm-gic Crate 中 提供的驅動程式,設定 Arm 泛型中斷控制器。 • 使用做為 IntId::spi(2) 有線連結至 GIC 的 RTC 中斷。 • 啟用中斷功能後,您可以透過 arm_gic::wfi() 將核心設為休眠,這樣核心就會進入休眠狀 態,直到遭中斷為止。 請下載練習範本,並在 rtc PL031_BASE_ADDRESS: *mut u32 = 0x901_0000 as _; /// The IRQ used by the PL031 RTC. const PL031_IRQ: IntId = IntId::spi(2); extern "C" fn main(x0: u64, x1: u64, x2: u64, x3: u64) { // Safe because `PL011_BASE_ADDRESS`0 码力 | 358 页 | 1.41 MB | 11 月前3
Comprehensive Rust(Português do Brasil) 202412de microcontroladores. • GPIO • PWM • Temporizadores de atraso • Barramentos e dispositivos I2C e SPI Os traits semelhantes para streams de bytes (por exemplo, UARTs), barras CAN e RNGs e quebrados em traits, por exemplo, um driver de acelerômetro pode precisar de uma implementação de barramento I2C ou SPI. • Os traits cobrem o uso dos periféricos, mas não a inicialização ou configuração deles, pois a inicialização configurar o Controlador de Interrupção • Use a interrupção RTC, que está conectada ao GIC como IntId::spi(2). • Depois que a interrupção for ativada, você poderá colocar o core para dormir via arm_gic::wfi()0 码力 | 389 页 | 1.05 MB | 11 月前3
Building Effective Embedded Systems: Architectural Best PracticesmessageEmbedded Unit AEmbedded Unit A Embedded Unit BEmbedded Unit A Embedded Unit B SPI I2C UART CAN bus EtherentSend status request Status message Box A Box BSend logs request Send0 码力 | 241 页 | 2.28 MB | 6 月前3
Comprehensive Rust(한국어) 202412있는주변기기를 추 상회 하는 다양한 트레잇을 제공합니다. • GPIO • ADC • I2C, SPI, UART, CAN • RNG • 타이머 • 워치독 그러면 다른 크레이트는 이 트레잇들을 활용하여드라이버를구현합니다. 예를 들어 가속도계 드라이버 를 구현할 떄 I2C 또는 SPI 버스구현을 사용할 수 있습니다. • 라스베리 파이에서 돌아가는 리눅스 같은 플랫폼 뿐만 생성된 인터럽트를 사용설정하고 처리합니다. arm-gic 크 레이트에 제공된 드라이버를 사용하여 Arm 일반 인터럽트 컨트롤러를구성할 수 있습니다. • GIC 에 IntId::spi(2) 로 연결된 RTC 인터럽트를 사용합니다. • 인터럽트를 사용 설정한 후에는 arm_gic::wfi() 를 통해 코어를절전 모드로 전환할 수 있습니다. 이 경우 인터럽트를 수신할 PL031_BASE_ADDRESS: *mut u32 = 0x901_0000 as _; /// PL031 RTC 에서 사용하는 IRQ 입니다. const PL031_IRQ: IntId = IntId::spi(2); extern "C" fn main(x0: u64, x1: u64, x2: u64, x3: u64) { 309 // `PL011_BASE_ADDRESS`가 PL0110 码力 | 369 页 | 1.29 MB | 11 月前3
共 12 条
- 1
- 2













