Nacos

【Java Spring Cloud 实战之路】添加一个SpringBootAdmin监控

坚强是说给别人听的谎言 提交于 2020-08-09 16:34:11
0. 前言 在之前的几章中,我们先搭建了一个项目骨架,又搭建了一个使用nacos的gateway网关项目,网关项目中并没有配置太多的东西。现在我们就接着搭建在Spring Cloud 微服务中另一个重要的项目 - Spring boot admin. 1. Spring Boot Admin 介绍 Spring Boot Admin 用来监控基于Spring Boot的应用,在Spring Boot Actuator的基础上提供了简洁的可视化Web UI。Spring Boot Admin 提供了以下功能: 显示应用的健康状态 显示应用的细节内容: JVM和内存信息,micrometer信息, 数据源信息,缓存信息等 显示 编译版本 查看和下载日志 查看jvm参数和环境变量值 查看Spring Boot项目配置 显示 thread dump 显示 http-traces …… 等一系列内容。 2. 创建一个 Spring Boot Admin项目 那么,我们就来创建一个Spring Boot Admin 项目吧。 2.1 创建 Spring Boot Admin 服务端 在manager 目录下,创建一个 monitor目录,并在monitor目录下创建一个pom.xml 文件,添加以下内容: <?xml version="1.0" encoding="UTF-8"?>

从开源自治到微服务云化,用这剂良药提升微服务幸福感

情到浓时终转凉″ 提交于 2020-08-09 13:22:54
前言 微服务发展至今,因其高内聚、低耦合等特性,以及诸多开源方案带来的开放性,已成为提升架构效率的最佳实践之一。当一项技术或一个框架成为事实标准之后,我们会把更多的注意力聚焦在运维效率和应用可用性的持续提升上。相信下面这些场景大家或多或少都遇到过。 场景一: 当业务达到一定的规模之后,微服务的数量和单个微服务实例的数就会变的很多,从而导致微服务注册中心需要管理很多服务地址,同时还需要给所有的上下游提供服务注册和服务发现的能力。 场景二: 发布是天大的事情,每一次的发布,都会出现执行到一半的请求中断掉,上游继续调用已经下线的节点导致报错的现象。发布时收到各种报错,同时还影响用户的体验,发布后又需要修复执行到一半的脏数据。 上述场景还是在新版本没有任何问题的情况下,如果新版本有问题,则会导致大量业务直接请求到有问题的新版本,轻则修复数据,重则严重影响用户体验,甚至产生资损。最后不得不每次发版都安排在凌晨两三点发布,心惊胆颤,睡眠不足,苦不可言。 场景三: 大半夜某个服务节点出现异常,上游仍旧不断地调用,出现很多异常和各种报警短信。被报警吵醒后,想直接在线上修复,有点难,想保留现场又害怕拖垮整个应用,只好先重启为上。 但是这只是治标不治本的方式,因为很难复现从而无法有效定位,可能明天又被吵醒,继续重启。上述场景还是建立在报警系统比较完善的情况下,如果没有完善的报警系统

尚硅谷《谷粒商城项目总结》

喜你入骨 提交于 2020-08-08 19:11:54
1、前言 花了几天的时间把尚硅谷的视频项目看完了,跟着做了一遍,基本上没啥大的问题,有几个小问题也做了总结。 技术方面除了 vue/nacos 没用过,其他的基本都用过,我们公司实际开发中用的也就是这一套东西。 中间的不想看,可以直接点击目录,看总结,总结里有你针对此项目所有的总结及问题解决的说明 1.1 技术栈 springcloud 统一配置中心:apollo 视频里用的 nacos 统一注册中心:eureka 视频里用的 nacos 远程调用:feign 文件上传:OSS(oss 中有文件过期的设置,我们项目就因为这个出了问题。加了过期时间戳,然后到时间过期了,淡疼) vue,前端搞,我们只搞后端。 1.2 统一异常处理 1)、异常根据业务分类,然后不同的业务异常编码做到统一的规范.对后期也是很好的,方便维护、管理。 2)、enum 维护,2 个字段 code msg,可以和 R 对象一起使用,异常时返回给前端显示 3)、throw 异常, xxxException 自己实现的统一异常,构造参数传上 xxxErrorCode(接口),然后所有的错误 Enum 实现这个接口,执行下面的代码就可以了。 throw new XXXException(XXXEnum.NOT_USER_ERROR); 然后抛出异常后,这个类(@RestControllerAdvice)就会去统一处理

微服务技术栈:常见注册中心组件,对比分析

偶尔善良 提交于 2020-08-08 09:41:27
本文源码: GitHub·点这里 || GitEE·点这里 一、注册中心简介 1、基础概念 在分布式架构的系统中注册中心这个概念就已经被提出了,最经典的就是Zookeeper中间件。 微服务架构中,注册中心是最核心的基础服务之一,注册中心可以看做是微服务架构中的通信中心,当一个服务去请求另一个服务时,通过注册中心可以获取该服务的状态,地址等核心信息。 服务注册主要关系到三大角色:服务提供者、服务消费者、注册中心。 2、流程和原理 基础流程 服务启动时,将自身的网络地址等信息注册到注册中心,注册中心记录服务注册数据。 服务消费者从注册中心获取服务提供者的地址,并通过地址和基于特定的方式调用服务提供者的接口。 各个服务与注册中心使用一定机制通信。如果注册中心与服务长时间无法通信,就会注销该实例,这也称为服务下线,当服务重新连接之后,会基于一定的策略在线上线。 服务地址相关信息发生变化时,会重新注册到注册中心。这样,服务消费者就无需手工维护提供者的相关配置。 核心功能 通过上面的基本流程,不难发现一个注册中心需要具备哪些核心功能: 服务发现 服务发现是指服务在启动后,注册到注册中心,服务方提供自身的元数据,比如IP地址、端口、运行状况指标的Uri 、主页地址等信息。 服务记录 记录注册中心的服务的信息,例如服务名称、IP地址、端口等。服务消费方基于查询获取可用的服务实例列表。

【Spring Cloud】注册中心-Nacos

萝らか妹 提交于 2020-08-07 08:33:03
1.名字的由来 前四个字母分别为 Naming 和 Configuration 的前两个字母,最后的 s 为 service 2.是什么 Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos:Dynamic Naming and Configuration Service Nacos就是【注册中心+配置中心】的组合 ===》Nacos = Eureka + Config + Bus Nacos支持AP和CP的切换。 来源: oschina 链接: https://my.oschina.net/u/4305000/blog/4355288

阿里巴巴26个屌炸天的开源项目,你知道几个?

非 Y 不嫁゛ 提交于 2020-08-07 04:08:55
来源:思否 segmentfault.com/a/1190000017346799 1.分布式应用服务开发的一站式解决方案 Spring Cloud Alibaba Spring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。 地址: https://github.com/spring-cloud-incubator/spring-cloud-alibaba 2. JDBC 连接池、监控组件 Druid Druid是一个 JDBC 组件。 1.监控数据库访问性能。 2.提供了一个高效、功能强大、可扩展性好的数据库连接池。 3.数据库密码加密。 4.SQL执行日志。 地址: https://github.com/alibaba/druid 3. Java 的 JSON 处理器 fastjson fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。 主要特点:快速FAST

202006291059.md

爷,独闯天下 提交于 2020-08-06 04:54:45
nacos cluster action create mysql database CREATE SCHEMA nacos_cluster0 DEFAULT CHARACTER SET utf8mb4 ; CREATE SCHEMA nacos_cluster1 DEFAULT CHARACTER SET utf8mb4 ; CREATE SCHEMA nacos_cluster2 DEFAULT CHARACTER SET utf8mb4 ; nacos_cluster0 docker run --detach \ --restart always \ --name nacos_cluster0 \ --publish 8847:8848 \ --env MODE=cluster \ --env NACOS_SERVERS="192.168.3.223:8847 192.168.3.223:8848 192.168.3.223:8849" \ --env MYSQL_DATABASE_NUM=1 \ --env SPRING_DATASOURCE_PLATFORM=mysql \ --env MYSQL_SERVICE_HOST=192.168.3.223 \ --env MYSQL_SERVICE_DB_NAME=nacos_cluster1 \ --env MYSQL

阿里巴巴26个屌炸天的开源项目,你知道几个?

梦想的初衷 提交于 2020-08-06 04:38:21
来源:思否 segmentfault.com/a/1190000017346799 1.分布式应用服务开发的一站式解决方案 Spring Cloud Alibaba Spring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。 地址: https://github.com/spring-cloud-incubator/spring-cloud-alibaba 2. JDBC 连接池、监控组件 Druid Druid是一个 JDBC 组件。 1.监控数据库访问性能。 2.提供了一个高效、功能强大、可扩展性好的数据库连接池。 3.数据库密码加密。 4.SQL执行日志。 地址: https://github.com/alibaba/druid 3. Java 的 JSON 处理器 fastjson fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。 主要特点:快速FAST

聊聊dubbo-go的nacosRegistry

北战南征 提交于 2020-08-05 20:29:05
序 本文主要研究一下dubbo-go的nacosRegistry nacosRegistry dubbo-go-v1.4.2/registry/nacos/registry.go var ( localIP = "" ) const ( //RegistryConnDelay registry connection delay RegistryConnDelay = 3 ) func init() { localIP, _ = gxnet.GetLocalIP() extension.SetRegistry(constant.NACOS_KEY, newNacosRegistry) } type nacosRegistry struct { *common.URL namingClient naming_client.INamingClient } nacosRegistry定义了common.URL、namingClient属性 newNacosRegistry dubbo-go-v1.4.2/registry/nacos/registry.go func newNacosRegistry(url *common.URL) (registry.Registry, error) { nacosConfig, err := getNacosConfig(url) if err !=

nacos+ribbon自定义ab测试路由策略

喜你入骨 提交于 2020-08-05 09:19:13
原理:通过请求头埋入指定服务的metadata标识,扩展ribbon的choose策略。 一定要注意hystrix的隔离策略 !!强烈推荐使用信号量隔离。 因为一旦使用线程隔离(线程池存在复用),会导致InheritThreadLocal(只会在线程init时拷贝父线程的ThreadLocal值)失效。 传送门 下载源码编译 应用集成 maven依赖 <dependency> <groupId>io.jmnarloch</groupId> <artifactId>ribbon-discovery-filter-spring-cloud-starter</artifactId> <version>2.1.0</version> </dependency> 应用配置 #AB测试用,网关会根据该参数路由 spring.cloud.nacos.discovery.metadata.launcher=A 拦截器 public class AbTestingFilter extends OncePerRequestFilter { private final static String SWITCH_KEY = "launcher", SWITCH_HEAD_KEY = "switchTag", DEFAULT_ENV = "B";//默认B为线上测试环境 @Value("${spring