nacos:服务治理

fegin:负载均衡

sentinel:分布式系统的流量防卫兵

sleuth+zipkin:链路追踪

前提软件安装

nacos:

github下载地址:https://github.com/alibaba/nacos/tags

码云下载地址:https://gitee.com/mirrors/Nacos

百度云盘:链接:https://pan.baidu.com/s/1KSMbDfWU0lhQxrkojwqoCQ 提取码:xalg

nacos快速开始:https://nacos.io/zh-cn/docs/quick-start.html

  1. 下载完成之后,解压,进入项目目录

  1. 进入解压后的bin目录,运行startup.cmd启动nacos

  1. 访问地址: http://192.168.32.1:8848/nacos/index.html

nacos 默认用户名、密码均为 nacos

  1. nacos已成功安装运行!

zipkin:

  1. 下载:

    https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/

  2. zipkin启动命令

java -jar D:/software/zipkin-server-2.12.9-exec.jar
  1. zipkin访问地址:http://localhost:9411/zipkin/

Sentinel

不安装该软件,项目也可以运行,只是无法访问控制台,进行监控。

GitHub 地址:https://github.com/alibaba/Sentinel

百度云地址:链接:https://pan.baidu.com/s/1OKg-Q8lXtHhT7ihIUhPtxA 提取码:3oaq

命令启动:

java -jar D:/software/sentinel-dashboard-1.7.1.jar

访问地址: http://localhost:8080/ , Sentinel 登录页面,输入默认登录账号密码均为 sentinel,都是小写。

创建springbootcloud项目

1. 新建个maven根项目。

后面就是输入项目名称,选择本项目地址就不一一描述了。

2. 建立子项目。maven项目。

后面操作步骤同上面差不多。

3. 根项目的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
</parent>
<groupId>com.blackcat</groupId>
<artifactId>demo-springbootcloud-alibaba</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>consumer</module>
<module>provider</module>
</modules>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
<spring-cloud-alibaba.version>2.1.0.RELEASE</spring-cloud-alibaba.version>
<swagger.version>2.4.0</swagger.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- spring-cloud -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
<!-- nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!--sleuth-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<!--zipkin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
</dependencies>
</project>

4. 提供者示例

4.1 nacos添加配置文件,填完发布。

4.2 项目添加bootstrap.xml

spring:
application:
name: provider # nacos中配置文件名称。如:provider-dev.yaml
cloud:
nacos:
config:
server-addr: localhost:8848 # nacos服务端地址
file-extension: yaml # 配置格式
profiles:
active: dev # 环境配置 如:provider-dev.yaml 中的dev

nacos 的provider-dev-yaml

server:
port: 8081
spring:
application:
name: provider
zipkin:
base-url: http://localhost:9411
discoveryClientEnabled: false
sleuth:
sampler:
probability: 1.0
cloud:
nacos:
discovery:
server-addr: localhost:8848

4.3 项目结构

源码后面会附出,就不每个类的代码就一一附出了。

4.4 项目启动后,查看nacos。

每启动一个服务,就会在服务列表中看到。

5. 消费者示例

5.1 项目结构

5.2 nacos 的consumer-dev-yaml

server:
port: 8082
spring:
application:
name: consumer
zipkin:
base-url: http://localhost:9411
discoveryClientEnabled: false
sleuth:
sampler:
probability: 1.0 #采样百分比 0.0 - 1.0
cloud:
nacos:
discovery:
server-addr: localhost:8848
sentinel:
transport:
port: 8888 #默认8888端口,假如被占用会自动从8888开始依次+1扫描,直至找到未被占用的端口
dashboard: localhost:8080 #指定Sentinel DashBoard服务地址
remote:
server: provider
#开启feign对sentinel的支持
feign:
sentinel:
enabled: true

5.3 主要代码

package com.blackcat.springbootcloud.feign;
import com.blackcat.springbootcloud.feign.fallback.ConsumerServiceFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* <p> 描述 :
* @author : blackcat
* @date : 2020/8/28 16:14
*
* ${remote.server} 为配置文件中的配置
* server:为提供者服务名称,如:provider-dev.yaml
*/
@FeignClient(value = "${remote.server}",fallback = ConsumerServiceFallback.class)
public interface ConsumerService {
/**
* <p> 描述 :
* @author : blackcat
* @date : 2020/8/28 16:16
*
* /provider/test 为提供者示例的方法链接
*/
@RequestMapping("/provider/test")
String test();
}

ConsumerServiceFallback:为当访问/provider/test访问不到,就会调用该类的方法。

package com.blackcat.springbootcloud.feign.fallback;
import com.blackcat.springbootcloud.feign.ConsumerService;
import org.springframework.stereotype.Service;
@Service
public class ConsumerServiceFallback implements ConsumerService {
@Override
public String test() {
return "访问失败";
}
}

5.4 访问结果

zipkin 控制台

Zipkin 是一个开放源代码分布式的跟踪系统,每个服务向zipkin报告计时数据,zipkin会根据调用关系通过Zipkin UI生成依赖关系图。

访问方法后,点击查询,会显示查询记录。

点击方法记录,会有详细的调用信息,用时。

根据下发示例,可以看出那个两个方法用时,就知道每个方法的用时,就知道问题出在何处。

sentinel 控制台

示例源码

https://gitee.com/kylin_lawliet/demo-springbootcloud-alibaba.git

创建一个springbootcloud项目的更多相关文章

  1. 快速创建一个springboot项目

    创建一个maven项目(springboot.mybatis-plus) 目标:可以访问ftl页面.对象(json字符串),可以进行单元测试 1.新建一个maven项目,选择模板maven-arche ...

  2. eclipes创建一个web项目web.xml不能自动更新的原因(web.xml和@WebServlet的作用)

    在eclipse中创建一个Web项目的时候,虽然有web.xml生成,但是再添加Servlet类文件的时候总是看不见web.xml的更新,所以异常的郁闷!上网查了查,原来我们在创建Web项目的时候,会 ...

  3. 【Android Developers Training】 1. 创建一个Android项目工程

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  4. 创建一个vue项目的过程

    创建一个vue项目: 1.首先从UI手上拿到PSD设计图,然后看设计搞的内容,需要做个大概的页面布局 2.做vue之前不许安装node,因为做vue项目要和node结合使用 3.然后安装vue脚手架: ...

  5. eclipse中创建一个maven项目

    1.什么是Maven Apache Maven 是一个项目管理和整合工具.基于工程对象模型(POM)的概念,通过一个中央信息管理模块,Maven 能够管理项目的构建.报告和文档. Maven工程结构和 ...

  6. Python框架学习之用Flask创建一个简单项目

    在前面一篇讲了如何创建一个虚拟环境,今天这一篇就来说说如何创建一个简单的Flask项目.关于Flask的具体介绍就不详细叙述了,我们只要知道它非常简洁.灵活和扩展性强就够了.它不像Django那样集成 ...

  7. 用maven创建一个web项目

    下面所使用的Eclipse开发工具为Eclipse Java EE IDE 版本. 1.创建一个maven项目,如图所示: 选择“maven-archetype-webapp”,如图所示: 后面几步按 ...

  8. Django之真正创建一个django项目

    真正创建一个django项目 1 创建Django项目     :new-project 2 创建APP :  python manager.py startapp app01 3 setting 配 ...

  9. Vue Create 创建一个新项目 命令行创建和视图创建

    Vue Create 创建一个新项目 命令行创建和视图创建 开始之前 你可以先 >>:cd desktop[将安装目录切换到桌面] >>:vue -V :Vue CLI 3.0 ...

随机推荐

  1. C/C++编程笔记:C语言基础printf()和scanf()函数,大学入门知识

    在解释这两个函数之前,为了方便大家更容易理解,我们先来讲讲下面的这幅图. ​ 这个图中的例子其实很简单,我们就是把题目通过输入设备(例如键盘鼠标)传输到计算机中,然后让计算机进行运算得出结果,再然后把 ...

  2. EC R 87 div2 D. Multiset 线段树 树状数组 二分

    LINK:Multiset 主要点一下 二分和树状数组找第k大的做法. 线段树的做法是平凡的 开一个数组实现就能卡过. 考虑如树状数组何找第k大 二分+查询来判定是不优秀的. 考虑树状数组上倍增来做. ...

  3. Dynamics365 Field Service Work Order Theory

    Come from :https://neilparkhurst.com/2016/08/20/field-service-work-order-theory/ In this post I aim ...

  4. 在Ubuntu18.04系统里面安装VMware tools遇到的问题 以及解决办法

    问题1:Ubuntu18.4下安装VMware Tools 一直提示 “what is the location of the ifconfig program on your manchine”. ...

  5. 【NOI2018】归程 题解(kruskal重构树+最短路)

    题目链接 题目大意:给定一张$n$个点$m$条边的无向图.每条边有长度和海拔.有$Q$次询问,每次给定起点$v$和当天水位线$p$,每次终点都是$1$.人可以选择坐车或走路,车只能在海拔大于水位线的路 ...

  6. 一个简单的CPP处理框架

    好久没有在csdn上写过东西了,这么多年,一方面是工作忙,下班到家也没有开过电脑了,要陪小孩玩: 下面分享一段代码,是用CPP做的一个简单的消息(协议)处理框架: 是通过成员函数指针+map来实现的: ...

  7. Spring Security学习笔记一

    一.使用Spring Security 1.在pom 文件中添加Spring Security的依赖. <dependency> <groupId>org.springfram ...

  8. Bytom Dapp 开发笔记(三):Dapp Demo前端源码分析

    本章内容会针对比原官方提供的dapp-demo,分析里面的前端源码,分析清楚整个demo的流程,然后针对里面开发过程遇到的坑,添加一下个人的见解还有解决的方案. 储蓄分红合约简述 为了方便理解,这里简 ...

  9. 编程与算法(一)、C语言实现二分法(方程近似解)

    一.二分法 假设有这样一个函数f(x) 函数与x轴有一个交点(也就是f(a)*f(b)<0,a<b),现在我们要求这个点的x值,也就是方程f(x)=0的一个实根 直接解显然不合适,那么接下 ...

  10. Nginx安装与运行配置总结

    Nginx安装与运行配置总结 1. 去官网下载对应的nginx包,推荐使用稳定版本 2. 上传nginx到linux系统 3. 安装依赖环境 (1)安装gcc环境 yun install gcc-c+ ...