GithubHelp home page GithubHelp logo

arvinyanggit / microservice-governance Goto Github PK

View Code? Open in Web Editor NEW

This project forked from longlongriver-storm/microservice-governance

0.0 0.0 0.0 1.21 MB

《微服务治理:体系、架构及实践》一书的示例源码

Java 21.51% CSS 36.19% JavaScript 38.05% HTML 0.73% FreeMarker 3.52%

microservice-governance's Introduction

《微服务治理:体系、架构及实践》

项目说明

本开源项目是《微服务治理:体系、架构及实践》一书的配套源码工程。
声明 :读者可以随意使用本源码,但由于本工程定位是“示例”,不是为生产应用而设计,第一追求的是读者能用最简单的环境、最少的操作就能将示例运行起来,所以这里不会有NoSQL、消息队列、配置下发服务等生产环境下才有的组件,这里只需要你有一个mySQL数据库即可(所以请不要质疑为什么我会将原始监控数据存在关系数据库中)。缺少全面的鲁棒性设计及完整测试,因此不建议直接在生产环境中使用。

目录说明

microservice-governance ----->顶层目录
     |-----database ----->数据库脚本目录**
     |-----storm-algorithm-demo ----->普通示例子工程目录(包含DSF算法示例、基于AST的Java源码解析示例等)
     |-----storm-monitor ----->本书第7、8、9章的示例,一个完整的线上指标埋点、采集、收集、存储、分析的多工程项目

工程层级说明

将源码下载到本地后,用IDE(笔者采用的是netbeans)打开后,会看到这是一个复合工程,包含了一系列的二级及三级子工程,工程结构如下所示:
storm-microservice-governance         -->一级父工程
      |------storm-algorithm-demo         -->二级工程,普通jar工程,包含了包含DSF算法示例、基于AST的Java源码解析示例等
      |------storm-monitor             -->二级父工程,包含了7、8、9章的演示示例
            |------storm-monitor-core         -->三级工程,监控核心JAR包工程,包含了采集端和收集服务端的一些核心能力
            |------storm-monitor-client-demo      -->三级工程,一个基于SpringBoot的Web工程,提供事件挡截演示
            |------storm-monitor-server-db       -->三级工程,监控收集服务端和监控大盘的一些通用功能JAR工程,主要包含对一些监控表的访问能力
            |------storm-monitor-server        -->三级工程,监控收集服务端,一个基于SpringBoot的监听服务工程(注意:不是web工程),负责接收来自各采集端的性能、异常、系统指标,并处理入库
            |------storm-monitor-dashboard       -->三级工程,监控大盘,一个基于SpringBoot的Web工程,提供各类监控大盘、监控配置、图表查看、监控数据查询等能力。

算法示例说明

相关算法都在工程storm-algorithm-demo中。
1、ParseOneJavaFile类是基于JDT解析Java源码的例子,此例子的运行可以使用JUnit测试类ParseOneJavaFileTest,修改相应要解析的java文件地址即可。
2、DAGDsfErgodic类是DSF的示例源码,此例子的运行可以使用JUnit测试类DAGDsfErgodicTest,直接运行即可。

指标监控及度量DEMO运行步骤说明

步骤一:初始化数据库

1、创建监控数据库及各指标存储表:运行database/monitor_create_db_and_table.sql脚本,会创建数据库 storm_monitor 及13张指标监控表和一张演示表
2、初始化自定义数据采集配置和自定义报表配置:运行database/monitor_config_data.sql.sql脚本,会在表apm_business_cfgapm_chart_confg中插入一些配置数据 请注意,以上两个SQL文件均是UTF-8编码,请在导入时设置好编码格式,以防止出现乱码

步骤二:修改工程中的数据库连接

分别修改如下3项数据库连接:
1、指标收集服务工程的数据库连接,位置:storm-monitor\server\src\main\resources\jdbc.properties
2、监控大盘服务工程的数据库连接,位置:storm-monitor\dashboard\src\main\resources\jdbc.properties
3、演示客户端工程的数据库连接,位置:client-demo\src\main\resources\jdbc.properties
以上3个文件,主要确认druid.urldruid.usernamedruid.password这三项属性,以保证数据库连接无误。

步骤三:编译工程

保证各个工程能够顺利通过Maven编译,并生成相应jar包

步骤四:启动指标收集服务

有两种启动方式:
1、开发模式下,运行指标收集服务工程storm-monitor-server的“StormMonitorServerApplication”类
2、以"java -jar storm-monitor-server-1.0.0.jar"的方式直接运行编译后的SpringBoot部署jar包
启动后,可以通过浏览器访问http://localhost:8092/apmtest/getinfo, 如果页面能够顺利访问,说明服务启动正常。
可以通过修改工程中的src\main\resources\META-INF\springxml\service-config.xml中的id为“apmCommonConfig”的Bean的ServerHttpPort属性来修改访问端口
相关功能及设计细节请参考《微服务治理:体系、架构及实践》中的第8章

步骤五:启动监控大盘服务

有两种启动方式:
1、开发模式下,运行指标收集服务工程storm-monitor-dashboard的“StormMonitorDashboardApplication”类
2、以"java -jar storm-monitor-dashboard-1.0.0.jar"的方式直接运行编译后的SpringBoot部署jar包
启动后,可以通过浏览器访问http://localhost:9090/, 如果页面能够顺利访问,说明服务启动正常。
可以通过修改工程中的src\main\resources\application.yml中的server.port属性来修改web访问端口

步骤六:启动客户端演示应用

这个演示应用是一个web应用,有两种启动方式:
1、开发模式下,运行指标收集服务工程storm-monitor-demo的“StormMonitorClientDemoApplication”类
2、以"java -jar storm-monitor-client-demo-1.0.0.jar"的方式直接运行编译后的SpringBoot部署jar包
启动后,可以通过浏览器访问http://localhost:8080/, 如果页面能够顺利访问,说明服务启动正常。
可以通过修改工程中的src\main\resources\application.yml中的server.port属性来修改web访问端口

步骤七:数据采集

登陆演示客户端:http://localhost:8080/
点击菜单“商品订单(事件样例)”,在这个模拟的订单功能模块中,进行一些增删改查动作,以产生一些事件,便于抓取器进行指标采集和抓取
或者可以点击菜单“调用事件生成器”,点击启动按钮,这个页面会定时调用后台相关功能,可以持续的输出一些模拟事件。
相关指标采集功能及设计细节请参考《微服务治理:体系、架构及实践》中的第7章

步骤七:指标大盘监控

登陆监控大盘:http://localhost:9090 ,通过各个功能菜单查看各类指标及指标的聚合分析能力。
相关功能及设计细节请参考《微服务治理:体系、架构及实践》中的第9章

祝各位顺利

microservice-governance's People

Contributors

longlongriver-storm avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.