Skip to content
/ iscp Public

微服务脚手架,相关技术spring-cloud、spring-cloud-alibaba、nacos、sentinel、skywalking、swagger2、yapi 、elk、docker、k8s

Notifications You must be signed in to change notification settings

oyd505/iscp

Repository files navigation

iscp

微服务脚手架,相关技术spring-cloud、spring-cloud-alibaba、nacos、sentinel、skywalking、swagger2、yapi、ELK(ElasticSearch + LogStash + Kibana)、docker、k8s

相关依赖框架

  • 1、spring-boot使用2.1.6.RELEASE
  • 2、spring-cloud使用Greenwich.RELEASE
  • 3、spring-cloud-alibaba使用2.1.0.RELEASE
  • 4、nacos-server使用1.1.3
  • 5、sentinel-dashboard使用1.6.3
  • 6、apache-skywalking-apm使用6.3.0

客户端使用(在jvm加入如下信息)

-javaagent:skywalking-agent.jar绝对路径 (如:C:\apache-skywalking\agent\skywalking-agent.jar)
-Dskywalking.agent.service_name=服务名字 (如:demo-consumer)
-Dskywalking.collector.backend_service=skywalking服务地址与端口 (如:127.0.0.1:11800)

java -javaagent:skywalking-agent.jar绝对路径(如:C:\apache-skywalking\agent\skywalking-agent.jar)
-Dskywalking.agent.service_name=服务名字 (如:demo-consumer)
-Dskywalking.collector.backend_service=skywalking服务地址与端口 (如:127.0.0.1:11800)
-jar 项目jar包 (如:iscp-nacos-0.0.1-SNAPSHOT.jar)

  • 7、yapi使用1.83

yapi安装

npm install -g yapi-cli --registry https://registry.npm.taobao.org
yapi server
服务管理
npm install pm2 -g //安装pm2
cd {项目目录}
pm2 start "vendors/server/app.js" --name yapi //pm2管理yapi服务
pm2 info yapi //查看服务信息
pm2 stop yapi //停止服务
pm2 restart yapi //重启服务

  • 8、zookeeper使用3.5.5

启动zookeeper

cmd,输入“zkServer“,运行Zookeeper

  • 9、Kafka使用2.12-2.3.0

启动Kafka

Kafka安装目录下执行.\bin\windows\kafka-server-start.bat .\config\server.properties

  • 10、ElasticSearch使用7.4.0

注册windows服务

elasticsearch-service.bat install
elasticsearch-service.bat manager

  • 11、LogStash使用7.4.0

启动LogStash

cd C:\elk\logstash-7.4.0
.\bin\logstash -f config\logstash-kafka.conf

  • 12、Kibana使用7.4.0

启动Kibana

双击kibana.bat启动

  • 13、DockerToolbox使用19.03.1

搭建docker环境

创建docker虚拟机:docker-machine create --driver virtualbox --virtualbox-boot2docker-url=/Users/Administrator/.docker/machine/cache/boot2docker.iso default
启动docker虚拟机:docker-machine start default
进入docker虚拟机:docker-machine ssh default
停止docker虚拟机:docker-machine stop default
搭建docker私服
拉取registry镜像:docker pull docker.io/registry
启动registry:docker run -d -p 5000:5000 --name=registry --restart=always --privileged=true --log-driver=none -v /home/data/registrydata:/tmp/registry registry

  • 14、minikube使用1.16.0

启动:minikube start --image-mirror-country=cn --registry-mirror=https://***.mirror.aliyuncs.com --insecure-registry=192.168.99.103:5000 --kubernetes-version v1.16.0
进入minikube虚拟机:minikube ssh
打开Kubernetes控制台:minikube dashboard 停止:minikube stop

项目模块介绍

  • 1、使用alibaba-nacos管理服务
  • 2、使用alibaba-nacos管理配置文件
  • 3、使用SkyWalking实现分布式追踪
  • 同上iscp-nacos项目
  • 1、使用openfeign声明式调用下游服务
  • 2、使用alibaba-sentinel做熔断降级控制
  • 3、使用alibaba-nacos存储服务降级规则
  • 同上iscp-nacos项目
  • 1、使用spring-cloud-gateway做api网关
  • 2、使用alibaba-sentinel做限流控制
  • 3、使用alibaba-nacos存储服务限流规则
  • 同上iscp-nacos项目
  • 1、使用spring-cloud-oauth2实现认证服务器
  • 同上iscp-nacos项目
  • 1、使用spring-cloud-oauth2实现资源服务器
  • 同上iscp-nacos项目
  • 1、使用swagger2生成接口数据
  • 2、使用yapi自动同步swagger数据管理接口
  • 同上iscp-nacos项目
  • 1、使用spring-kafka发布和订阅消息
  • 同上iscp-nacos项目
  • 1、使用spring-cloud-stream发布和订阅消息
  • 同上iscp-nacos项目
  • 1、使用kafka、logstash采集日志
  • 2、使用elasticsearch存储日志
  • 3、使用kibana展示日志

测试

  • 获取token

Grant Type: Authorization Code
Callback URL: http://127.0.0.1:9005/login
Auth URL: http://localhost:9103/oauth/authorize
Access Token URL: http://localhost:9103/oauth/token
Client ID: client1
Client Secret: 123456

  • 访问资源

url: http://localhost:9104/info/user
headers: Authorization:Bearer 894fc69f-6a60-4cff-b762-374db6c0e033

  • 访问、同步与管理接口

swagger界面url: http://localhost:9105/swagger-ui.html
swagger数据url: http://localhost:9105/v2/api-docs
yapi管理url: http://localhost:3000(默认密码为 ymfe.org)

  • ELK收集处理日志

cmd输入“zkServer“,运行Zookeeper
运行.\bin\windows\kafka-server-start.bat .\config\server.properties启动kafka
启动ElasticSearch服务
运行logstash -f ..\config\logstash-kafka.conf启动LogStash
双击kibana.bat启动Kibana
浏览器访问http://localhost:5601管理Kibana
Kibana的Management页面创建Index Patterns
Kibana的Discover页面搜索日志数据

  • 构建、运行docker镜像

前提条件:windows系统安装好docker环境并与PowerShell建立链接(docker-machine env default | Invoke-Expression)
项目中编写Dockerfile文件
项目环境下执行如下命令(mvn dockerfile:build)
执行docker images命令查看docker镜像
运行docker镜像:docker run -idt -p 9100:9100 --name iscp-nacos 192.168.99.103:5000/iscp-nacos:0.0.1-SNAPSHOT
进入docker镜像内部:docker exec -it iscp-nacos /bin/sh

  • minikube运行应用

前提条件:搭建docker registry和minikube环境
编写iscp-nacos.yaml脚本并执行命令kubectl create -f iscp-nacos.yaml创建pod
执行kubectl get pods查看pod
使用kubectl port-forward iscp-nacos-pod 9100:9100实现pod端口临时转发

注意事项

  • 1、namespase如果不是public,需要配置对应的命名空间ID(如:c6ef4ed4-1a37-4672-a8dc-53926e8e9b49)
  • 2、使用监控spring-cloud-gateway,需要将apm-spring-cloud-gateway-2.x-plugin-6.3.0.jar插件从optional-plugins目录移到plugins目录,否则traceId不传递
  • 3、单机测试时,认证服务器redirectUris一定要写成127.0.0.1,确保认证服务器和sso客户端不同域名,防止浏览器使用同一个cookie导致页面一直再login页重定向
  • 4、如果pom.xml文件第一行报错 Unknown Error,在pom中的properties里加上 <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>就可以了
  • 5、日志中使用SkyWalking的apm-toolkit-logback-1.x增加TraceId,使用ConsoleAppender和KafkaAppender都能正确获取TraceId,但使用LogstashTcpSocketAppender获取不到TraceId
  • 6、docker与k8s环境都需要配置镜像加速registry-mirror
  • 7、virtualbox虚拟机在host-only网络环境下如果需要访问宿主机,需关闭宿主机防火墙

参考资料

About

微服务脚手架,相关技术spring-cloud、spring-cloud-alibaba、nacos、sentinel、skywalking、swagger2、yapi 、elk、docker、k8s

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published