Doris-1:Doris简介

1.Apache Doris 简介

Apache Doris 是一款基于 MPP 架构的高性能、实时分析型数据库。它以高效、简单和统一的特性著称,能够在亚秒级的时间内返回海量数据的查询结果。Doris 既能支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。

基于这些优势,Apache Doris 非常适合用于报表分析、即席查询、统一数仓构建、数据湖联邦查询加速等场景。用户可以基于 Doris 构建大屏看板、用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用。

2.发展历程

Apache Doris 最初是百度广告报表业务的 Palo 项目。2017 年正式对外开源,2018 年 7 月由百度捐赠给 Apache 基金会进行孵化。在 Apache 导师的指导下,由孵化器项目管理委员会成员进行孵化和运营。2022 年 6 月,Apache Doris 成功从 Apache 孵化器毕业,正式成为 Apache 顶级项目(Top-Level Project,TLP)。

3.架构

Apache Doris 采用 MySQL 协议,高度兼容 MySQL 语法,支持标准 SQL。用户可以通过各类客户端工具访问 Apache Doris,并支持与 BI 工具无缝集成。在部署 Apache Doris 时,可以根据硬件环境与业务需求选择存算一体架构或存算分离架构。(存算分离3.0版本可以支持)

3.1.存算一体架构

在这里插入图片描述

Apache Doris 存算一体架构精简且易于维护。它包含以下两种类型的进程:

  • Frontend (FE): 主要负责接收用户请求、查询解析和规划、元数据管理以及
nacos: server-addr: 10.0.40.184:8848 namespace: 2e1c7084-93fa-44e0-99a4-e606753b7a65 spring: application: name: your-service-name # 服务名需唯一 group: your-group # 确保与 shared-configs 中的 group 一致 profiles: active: dev # 确保与 discovery.group 一致 cloud: nacos: config: username: n22os password: 11 context-path: /nacos server-addr: ${nacos.server-addr} namespace: ${nacos.namespace} shared-configs: - data-id: pousheng-xdc-admin-common-dev.yml group: ${spring.application.group} refresh: true extension-configs: - data-id: pousheng-xdc-target-admin-dev.yml group: ${spring.application.group} refresh: true discovery: server-addr: ${nacos.server-addr} namespace: ${nacos.namespace} service: ${spring.application.name} group: ${spring.profiles.active}@Api(value = "目标预估查询doris服务接口", tags = "目标预估查询doris服务接口") @FeignClient(name = "pousheng-xdc-doris-service", contextId = "client-goal", fallbackFactory = DorisTargetClientFallbackFactory.class,path = "/pousheng-xdc-doris-service") //@FeignClient(name = "pousheng-xdc-doris-service",url = "localhost:8083/pousheng-xdc-doris-service", contextId = "client-goal", fallbackFactory = DorisTargetClientFallbackFactory.class) public interface DorisTargetClient { /** * 目标预估-查询doris门店基本信息 */ @PostMapping("/api/target/getDorisStoreInfoList") BaseResponse<List<DorisStoreInfoRespDTO>> getDorisStoreInfoList(@RequestBody DorisStoreInfoReqDTO queryCmd); }现在两个服务,本地调用是可以相同的,但是在测试环境上由于不同的服务器不同的docker,导致服务无法发现,但是改成一个服务器后不同的docker后,可以发现。如何解决呢,特别是服务方存在多个ip的情况下
03-25
<think>嗯,用户现在遇到了Nacos在多IP环境的Docker容器中服务注册与发现的问题。让我先理清楚他们的情况。用户提到不同Docker容器间的服务无法正常发现,特别是在多IP环境下。根据提供的引用内容,可能的问题有几个方面。 首先,引用[1]提到动态IP可能导致服务发现失败,建议配置静态IP。这可能是一个关键点,因为如果容器IP频繁变化,Nacos客户端可能无法正确注册或发现服务。用户可能没有为容器设置固定IP,导致服务地址变动,无法被其他服务发现。 然后看引用[4],用户尝试通过容器名或IP访问Nacos API失败,说明可能存在网络配置问题。比如,Docker容器之间的网络通信是否正常,是否在同一个自定义网络中。如果容器不在同一网络,可能无法通过服务名解析到正确的IP。 接下来是引用[3]中的docker-compose配置,用户可能使用了自定义的application.properties,但配置是否正确?比如,Nacos的配置中是否指定了正确的网络参数,如nacos.inetutils.ip-address,确保Nacos服务使用容器所在网络的IP地址。 另外,引用[5]提到的Spring Cloud集成问题,可能涉及数据源配置错误,但用户当前的问题更多是网络层面的,但也不能排除客户端配置问题,比如服务注册时使用了错误的IP或端口。 可能的解决方案步骤应该是:1)确保所有服务容器在同一个Docker自定义网络中,使用静态IP或固定网络别名;2)正确配置Nacos服务端和客户端的网络参数,确保注册的IP和端口能被其他容器访问;3)检查Spring Cloud Alibaba的配置,确保服务发现配置正确。 需要验证用户是否已经创建了自定义网络,并在启动容器时指定了正确的网络和IP。例如,如引用[1]所述,创建自定义桥接网络并分配静态IP给Nacos容器。同时,其他服务容器也应加入同一网络,这样它们可以通过容器名或静态IP相互通信。 另外,Nacos服务端的配置可能需要调整,如application.properties中的server.address或客户端注册时指定的IP。例如,在Spring Cloud应用中,可能需要设置spring.cloud.nacos.discovery.ip参数,确保注册的是容器内部网络的IP,而不是宿主机的IP。 还有可能的问题点是端口映射是否正确。如果Nacos容器的端口仅映射到宿主机,而其他容器试图通过宿主机IP访问,可能会遇到问题,尤其是在多主机环境下。建议在容器间直接使用内部网络通信,避免依赖宿主机端口映射。 总结下来,解决方案包括网络配置、静态IP或服务发现配置、Nacos及客户端参数调整。需要逐步排查每个环节,确保容器间网络连通,服务注册的地址正确,客户端能够正确发现服务。</think>### Nacos多IP环境下Docker容器服务注册与发现解决方案 #### 问题分析 在多IP环境的Docker容器中,服务注册失败或发现异常通常由以下原因导致: 1. **动态IP分配问题**:容器IP地址变化导致Nacos注册中心记录失效[^1] 2. **网络隔离**:容器未加入同一网络,导致跨网段通信失败[^4] 3. **IP地址绑定错误**:服务注册时绑定到宿主机IP或错误网卡地址[^3] #### 分步解决方案 **1. 创建专用Docker网络** ```bash docker network create --subnet=172.19.0.0/16 --gateway=172.19.0.1 nacos-net ``` **作用**:为所有服务容器提供固定IP段的通信环境[^1] **2. 部署Nacos服务端(固定IP)** ```bash docker run -d --name nacos-server \ --network nacos-net \ --ip 172.19.0.2 \ -p 8848:8848 \ -e MODE=standalone \ -e NACOS_SERVER_IP=172.19.0.2 \ -v nacos-data:/home/nacos/data \ nacos/nacos-server:2.0.3 ``` **关键参数说明**: - `--ip`:指定固定IP地址 - `NACOS_SERVER_IP`:强制绑定服务端IP **3. 配置服务客户端** 在Spring Cloud应用的`application.yml`中添加: ```yaml spring: cloud: nacos: discovery: server-addr: 172.19.0.2:8848 ip: ${CONTAINER_IP} # 通过环境变量注入容器IP auto-register: true failure-tolerance-enabled: true ``` **环境变量注入方式**(Docker启动参数): ```bash -e CONTAINER_IP=172.19.0.3 ``` **4. 网络连通性验证** ```bash # 进入任意服务容器执行 curl http://nacos-server:8848/nacos/v1/ns/instance/list?serviceName=YOUR_SERVICE ``` 若返回服务实例列表,说明网络通信正常[^4] #### 典型错误排查 **场景**:出现`Connection refused`错误 1. 检查容器是否加入`nacos-net`网络 2. 验证Nacos控制台服务列表中的注册IP是否为容器IP 3. 确认端口映射正确性(建议容器间直接使用内部网络通信) #### 优化建议 1. 使用`docker-compose`统一管理服务(参考配置模板) 2. 配置健康检查机制 3. 启用Nacos集群模式提升可用性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wengad

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值