Spring Cloud  搭建
最近在学习spring cloud 记录下在整个框架搭建注意事项。版本SpringBoot : 2.0.9.RELEASESpringCloud : Finchley.SR4一 、说明使用SpringCloud全家桶组件eureka(注册中心) config动态配置中心 zuul( 网关 ) openfeign服务通讯 hystrix限流熔断 dashboard限流熔断界面化监控 sleuth 调用链追踪 Zipkin调用链追踪界面化监控 logback-gelf (日志收集) grayLog (日志统一管理) rabbit (链路追踪信息发送使用 rabbt mq 异步化 mysql存储 )二 、项目模块order product这里是一个非常简单的功能 根据id查询订单。请求先经过 zuul-- order server----product server 。测试连接:http://localhost:9090/order/v1/findOrderByIdeureka :zipkin 监控hystrix 监控zipkin 监控grayLog 日志监控项目三、问题总结1. 配置eureka 一定要加上register-with-eureka: falsefetch-registry: false否则启动会报错fetch-registry: 检索服务选项当设置为True(默认值)时会进行服务检索,注册中心不负责检索服务。register-with-eureka: 服务注册中心也会将自己作为客户端来尝试注册自己,为true默认时自动生效2.配置 hystrix-dashboard 要暴露下流传传输路径management:endpoints:web:exposure:include: *3.要配置prefer-ip-address 否则发布项目到doker后通讯的ip获取错误eureka:instance:prefer-ip-address: true7.zuul 默认是将注册中心获取到的全部服务接口进行发布代理详情启动控制台会打印。可以设置相关的敏感头信息不传送给后端的服务如果cookie。8 . 配置zuul调用后台服务的超时时间的话配置ribbon的超时时间及可ribbon:ReadTimeout: 5000ConnectTimeout: 50009使用sleuth zipkin时整个调用链从gateway开始服务器都要配置下starter-zipkin相关配置信息,这样在zipkin控制台才能看到整个调用链的服务名称。最好使用mq异步传输日志信息。zipkin服务端建议用docker安装。zipkin的服务器时间要和服务的时间一样。10. config 配置中心最好配置下baseUri 指定将配置文件保存到本机的位置。因为生产环境有文件权限问题。当使用配置中心时 要将客户端服务的application.yml改成 bootstrap.yml使配置文件优先加载后再去加载其他的。每次重启config服务都会去git上拉取最新的配置到本地。如果使用自动更新配置需要将config服务进行 bus-refresh 方法暴露management:endpoints:web:exposure:include: *然后调用下这个/actuator/bus-refreshpost的接口。 也可用使用 webHooks自动调用config-client端要将被自动刷新的类上增加RefreshScope 注解。11.config-client 中的bootstrap.yml配置文件不需要指定配置文件名因为会自动根据 appliction.name 的value 拼接 cloud.profile的value 去取对应的配置文件config-client bootstrap配置文件中一定要配置eureka因为是先去eureka获取config服务的信息再去config中拉取配置启动项目的。四、zipkin server docker 安装1.创建文件 docker-compose.yml# This file uses the version 2 docker-compose file format, described here: # https://docs.docker.com/compose/compose-file/#version-2 # # This runs the zipkin and zipkin-mysql containers, using docker-composes # default networking to wire the containers together. # # Note that this file is meant for learning Zipkin, not production deployments. version: 2 services: zipkin: image: openzipkin/zipkin container_name: zipkin # Environment settings are defined here https://github.com/openzipkin/zipkin/tree/1.19.0/zipkin-server#environment-variables environment: - STORAGE_TYPEmysql # Point the zipkin at the storage backend - MYSQL_DBshop_zipkin - MYSQL_USERroot - MYSQL_PASSroot - MYSQL_HOST192.168.43.212 - MYSQL_TCP_PORT3306 # Uncomment to enable scribe # - SCRIBE_ENABLEDtrue # Uncomment to enable self-tracing # - SELF_TRACING_ENABLEDtrue # Uncomment to enable debug logging # - JAVA_OPTS-Dlogging.level.zipkinDEBUG -Dlogging.level.zipkin2DEBUG - RABBIT_ADDRESSES192.168.0.10:5672 - RABBIT_USERguest - RABBIT_PASSWORDguest - RABBIT_QUEUEzipkin - RABBIT_VIRTUAL_HOST/ ports: # Port used for the Zipkin UI and HTTP Api - 9411:9411 # Uncomment if you set SCRIBE_ENABLEDtrue # - 9410:94102.msql 创建zipkin 数据库和表DROP TABLE IF EXISTS zipkin_annotations; CREATE TABLE zipkin_annotations ( trace_id_high bigint(20) NOT NULL DEFAULT 0 COMMENT If non zero, this means the trace uses 128 bit traceIds instead of 64 bit, trace_id bigint(20) NOT NULL COMMENT coincides with zipkin_spans.trace_id, span_id bigint(20) NOT NULL COMMENT coincides with zipkin_spans.id, a_key varchar(255) NOT NULL COMMENT BinaryAnnotation.key or Annotation.value if type -1, a_value blob COMMENT BinaryAnnotation.value(), which must be smaller than 64KB, a_type int(11) NOT NULL COMMENT BinaryAnnotation.type() or -1 if Annotation, a_timestamp bigint(20) DEFAULT NULL COMMENT Used to implement TTL; Annotation.timestamp or zipkin_spans.timestamp, endpoint_ipv4 int(11) DEFAULT NULL COMMENT Null when Binary/Annotation.endpoint is null, endpoint_ipv6 binary(16) DEFAULT NULL COMMENT Null when Binary/Annotation.endpoint is null, or no IPv6 address, endpoint_port smallint(6) DEFAULT NULL COMMENT Null when Binary/Annotation.endpoint is null, endpoint_service_name varchar(255) DEFAULT NULL COMMENT Null when Binary/Annotation.endpoint is null, UNIQUE KEY trace_id_high (trace_id_high,trace_id,span_id,a_key,a_timestamp) COMMENT Ignore insert on duplicate, UNIQUE KEY trace_id_high_4 (trace_id_high,trace_id,span_id,a_key,a_timestamp) COMMENT Ignore insert on duplicate, KEY trace_id_high_2 (trace_id_high,trace_id,span_id) COMMENT for joining with zipkin_spans, KEY trace_id_high_3 (trace_id_high,trace_id) COMMENT for getTraces/ByIds, KEY endpoint_service_name (endpoint_service_name) COMMENT for getTraces and getServiceNames, KEY a_type (a_type) COMMENT for getTraces and autocomplete values, KEY a_key (a_key) COMMENT for getTraces and autocomplete values, KEY trace_id (trace_id,span_id,a_key) COMMENT for dependencies job, KEY trace_id_high_5 (trace_id_high,trace_id,span_id) COMMENT for joining with zipkin_spans, KEY trace_id_high_6 (trace_id_high,trace_id) COMMENT for getTraces/ByIds, KEY endpoint_service_name_2 (endpoint_service_name) COMMENT for getTraces and getServiceNames, KEY a_type_2 (a_type) COMMENT for getTraces and autocomplete values, KEY a_key_2 (a_key) COMMENT for getTraces and autocomplete values, KEY trace_id_2 (trace_id,span_id,a_key) COMMENT for dependencies job ) ENGINEInnoDB DEFAULT CHARSETutf8 ROW_FORMATCOMPRESSED; -- ---------------------------- -- Table structure for zipkin_dependencies -- ---------------------------- DROP TABLE IF EXISTS zipkin_dependencies; CREATE TABLE zipkin_dependencies ( day date NOT NULL, parent varchar(255) NOT NULL, child varchar(255) NOT NULL, call_count bigint(20) DEFAULT NULL, error_count bigint(20) DEFAULT NULL, PRIMARY KEY (day,parent,child) ) ENGINEInnoDB DEFAULT CHARSETutf8 ROW_FORMATCOMPRESSED; -- ---------------------------- -- Table structure for zipkin_spans -- ---------------------------- DROP TABLE IF EXISTS zipkin_spans; CREATE TABLE zipkin_spans ( trace_id_high bigint(20) NOT NULL DEFAULT 0 COMMENT If non zero, this means the trace uses 128 bit traceIds instead of 64 bit, trace_id bigint(20) NOT NULL, id bigint(20) NOT NULL, name varchar(255) NOT NULL, remote_service_name varchar(255) DEFAULT NULL, parent_id bigint(20) DEFAULT NULL, debug bit(1) DEFAULT NULL, start_ts bigint(20) DEFAULT NULL COMMENT Span.timestamp(): epoch micros used for endTs query and to implement TTL, duration bigint(20) DEFAULT NULL COMMENT Span.duration(): micros used for minDuration and maxDuration query, PRIMARY KEY (trace_id_high,trace_id,id), KEY trace_id_high (trace_id_high,trace_id) COMMENT for getTracesByIds, KEY name (name) COMMENT for getTraces and getSpanNames, KEY remote_service_name (remote_service_name) COMMENT for getTraces and getRemoteServiceNames, KEY start_ts (start_ts) COMMENT for getTraces ordering and range, KEY trace_id_high_2 (trace_id_high,trace_id) COMMENT for getTracesByIds, KEY name_2 (name) COMMENT for getTraces and getSpanNames, KEY remote_service_name_2 (remote_service_name) COMMENT for getTraces and getRemoteServiceNames, KEY start_ts_2 (start_ts) COMMENT for getTraces ordering and range ) ENGINEInnoDB DEFAULT CHARSETutf8 ROW_FORMATCOMPRESSED;3.客户端配置1.1 pom 引入rabiit mq jar dependency groupIdorg.springframework.amqp/groupId artifactIdspring-rabbit/artifactId /dependency 1.2 客户端配置rabiit mq rabbitmq: host: localhost username: guest password: guest port: 5672 virtual-host: / ###开启消息确认机制 confirms publisher-confirms: true publisher-returns: true4 .启动容器docker-compose up -d注意要关闭防火墙关闭防火墙后docker要启动下五、graylog安装1. 创建文件 docker-compose.ymlversion: 2 services: mongodb: image: mongo:3 elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.6.1 environment: - http.host0.0.0.0 - transport.hostlocalhost - network.host0.0.0.0 - ES_JAVA_OPTS-Xms512m -Xmx512m ulimits: memlock: soft: -1 hard: -1 mem_limit: 1g graylog: image: graylog/graylog:3.0 environment: - GRAYLOG_PASSWORD_SECRETsomepasswordpepper - GRAYLOG_ROOT_PASSWORD_SHA28c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 - GRAYLOG_HTTP_EXTERNAL_URIhttp://127.0.0.1:9000/ - GRAYLOG_ROOT_TIMEZONEAsiz/Shanghai links: - mongodb:mongo - elasticsearch depends_on: - mongodb - elasticsearch ports: - 9000:9000 - 1514:1514 - 1514:1514/udp - 12201:12201 - 12201:12201/udp2. 启动 docker-compose up -d3.进入管理页面配置http://localhost:9000admin adminsystem--- inputs -- select input 输入 udp 选择 GELF UDP --- LAUNCH NEW INPU --- 勾选global---save4. spring boot 客服端集成graylog 发送日志https://github.com/osiegmar/logback-gelf六源码地址https://github.com/lyy2002/spring-cloud-demo

相关新闻

如何快速掌握字体设计:开源编辑器FontForge完整指南

如何快速掌握字体设计:开源编辑器FontForge完整指南

如何快速掌握字体设计:开源编辑器FontForge完整指南 【免费下载链接】fontforge Free (libre) font editor for Windows, Mac OS X and GNULinux 项目地址: https://gitcode.com/gh_mirrors/fo/fontforge 你是否曾梦想设计属于自己的独特字体,却被…

2026/7/28 19:42:31阅读更多 →
如何用ShaderGlass实现实时视觉魔法:4个颠覆性应用场景

如何用ShaderGlass实现实时视觉魔法:4个颠覆性应用场景

如何用ShaderGlass实现实时视觉魔法:4个颠覆性应用场景 【免费下载链接】ShaderGlass Overlay for running GPU shaders on top of Windows desktop and Wine 项目地址: https://gitcode.com/gh_mirrors/sh/ShaderGlass 你是否曾怀念那些在老旧CRT显示器上玩…

2026/7/28 19:42:30阅读更多 →
HarmonyOS应用开发实战:猫猫大作战-onClick 回调与闭包、handleColumnClick 处理流程、MVC 分层(UI 调引擎 + 同

HarmonyOS应用开发实战:猫猫大作战-onClick 回调与闭包、handleColumnClick 处理流程、MVC 分层(UI 调引擎 + 同

前言 上一篇我们拆透了定时器泄漏的坑——clearTimers 兜底防泄漏。但定时器只是「时间驱动」,游戏还要「事件驱动」——玩家点击某列时投放猫咪。这需要 ArkUI 的 onClick 事件配合透明点击层(第 17 篇讲过结构)和 handleColumnClick 处理函…

2026/7/28 19:40:21阅读更多 →
历史学论文降AI工具免费推荐:2026年历史学毕业论文降AI99.26%达标知网完整指南

历史学论文降AI工具免费推荐:2026年历史学毕业论文降AI99.26%达标知网完整指南

历史学论文降AI工具免费推荐:2026年历史学毕业论文降AI99.26%达标知网完整指南 论文AI率超标这件事,选错工具比不选工具更耽误事。 综合试用和口碑,历史学论文降AI我主推嘎嘎降AI(www.aigcleaner.com),4.…

2026/7/28 21:00:50阅读更多 →
【AI考研备考黄金法则】:20年教育技术专家亲授5大智能提分路径,98%学员3个月内突破瓶颈

【AI考研备考黄金法则】:20年教育技术专家亲授5大智能提分路径,98%学员3个月内突破瓶颈

更多请点击: https://codechina.net 第一章:AI考研备考的认知革命与底层逻辑 传统考研备考常陷入“资料堆砌—机械刷题—临阵抱佛脚”的线性循环,而AI时代的备考本质是一场认知范式的迁移:从记忆导向转向模型思维,从孤…

2026/7/28 21:00:50阅读更多 →
北京企业招聘信息发布平台怎么选?人力资源师实测|吉鹿力招聘网深度解析

北京企业招聘信息发布平台怎么选?人力资源师实测|吉鹿力招聘网深度解析

CSDN博客正文(HR视角|标题、标签完整适配CSDN平台) 标题:北京企业招聘信息发布平台怎么选?人力资源师实测|吉鹿力招聘网深度解析 一、前言:北京招聘市场现状,HR 普遍面临的痛点 北…

2026/7/28 21:00:50阅读更多 →
化学论文降AI工具免费推荐:2026年化学毕业论文降AI99.26%达标知网完整指南

化学论文降AI工具免费推荐:2026年化学毕业论文降AI99.26%达标知网完整指南

化学论文降AI工具免费推荐:2026年化学毕业论文降AI99.26%达标知网完整指南 帮同学处理过化学论文降AI,试了三四款工具,最后固定用嘎嘎降AI(www.aigcleaner.com)。 4.8元,达标率99.26%,稳定省钱…

2026/7/28 21:00:50阅读更多 →
Android+OpenCV实现胶体金卡CT区域自动识别

Android+OpenCV实现胶体金卡CT区域自动识别

1. 项目概述:胶体金卡CT检测区域的自动识别 在医疗检测和快速诊断领域,胶体金免疫层析技术因其操作简便、快速出结果等优势被广泛应用。这种检测卡通常包含控制线(C线)和检测线(T线),通过颜色变化来判断检测结果。传统的人工判读方式存在主观…

2026/7/28 21:00:50阅读更多 →
提示词驱动的AI Agent:CLI-Anything技术解析

提示词驱动的AI Agent:CLI-Anything技术解析

1. CLI-Anything 的本质:提示词驱动的AI Agent 当我第一次看到CLI-Anything这个项目时,最让我震惊的是它完全颠覆了传统命令行工具的开发模式。作为一个长期从事CLI工具开发的工程师,我习惯性地去GitHub仓库里寻找核心引擎代码,结…

2026/7/28 20:58:49阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/28 4:06:39阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/28 2:08:06阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/28 1:38:28阅读更多 →
告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:29阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:29阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:29阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/28 20:22:24阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/28 3:17:03阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →