# unistar-console **Repository Path**: sunson468/unistar-console ## Basic Information - **Project Name**: unistar-console - **Description**: Unistar的中心控台,基于Vue iView进行开发。 - **Primary Language**: NodeJS - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-03-05 - **Last Updated**: 2021-04-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Unistar 控制台 Unistar 控制台是基于[Vue](https://cn.vuejs.org/)开发的,用于 Unistar 微服务体系的管理。 ### 控制台部署 Unistar 控制台是采用前后端分离的开发方式,编译出来的是纯静态文件,需要借助 Nginx 等应用中间件。 > 如果静态部署访问域名和 Unistar 中心服务部署的域名不同,则可在服务端中间件或者 Unistar 中心的 WebConfig 设置里配置相应的跨域支持。 > Unistar 中心服务默认设置为支持所有跨域访问。 ### 控制台相关技术 Unistar 的 UI 用的是[View UI®](https://www.iviewui.com/),集成了[路由](https://router.vuejs.org)和[国际化](http://kazupon.github.io/vue-i18n/),http 请求用的[axios](github.com/axios/axios),图表用的是[g2plot](https://antv-g2plot.gitee.io/zh)。 有关在 Vue 中使用的一些经验心得我都收录在我的[博客](https://www.up1234567.com/blog/#/)中。 ### 界面一览 ![监控页面](./doc/images/preview.png) ### 控制台菜单功能介绍 #### Dashboard - 工作台 工作台暂时没有实现功能 - 监控页面 监控页面实现了累计统计数据和近期的请求数据汇总。 ![监控页面](./doc/images/monitor.png) #### 应用管理 应用管理的功能比较复杂,包含了应用、节点、配置等等一系列的功能。 - 应用列表 ![应用列表](./doc/images/app.png) - 新增应用 一般来说需要先在应用列表中增加应用,以便提前配置,配置应用的时候可以选择 ![应用列表](./doc/images/app/appadd.png) - 编辑配置 可以表单配置方式,也可以 properties 配置方式,配置可增加 Profile,Profile 配置会覆盖无 Profile 的配置。该配置针对全体应用节点,节点重启后才会生效,如需动态调整配置,请在下面节点列表里的更改配置里操作。 ![编辑配置](./doc/images/app/configedit.png) - 依赖配置 有一些配置是通用的,比如数据库连接,缓存地址,第三方接口地址等等,将这些通用的配置预先设置好,应用只需要依赖这些配置即可获得配置参数。如需配置通用参数,则需要管理员在基础设置里的公共配置内操作。 ![编辑配置](./doc/images/app/configdep.png) - 节点列表 应用节点只要上线过的都会在此列出,会展示是否在线的状态以及其他。 ![节点列表](./doc/images/app/appnode.png) - 添加节点 通常情况下,节点都是自动添加的,但是有些情况,该服务并不是通用语言体系的,甚至是外部的,但是我们也希望将其纳入服务节点内,这个时候就需要手动添加节点。 值得注意的是,节点需要一个心跳检测地址,Unistar 中心将会通过该地址来检测服务是否可用。 ![添加节点](./doc/images/app/nodeadd.png) - 请求统计 所有实际被请求的路径均会在此展示,包含了外部请求,任务请求和内部异步请求。 ![请求统计](./doc/images/app/nodestat.png) - 路径监听 路径监听是实时的,并且可以跨服务实时追踪,列出服务的 IP,便于深入调查。可以无限追踪下去,当然,如果你的链路请求过长,也建议你优化逻辑,减少请求链路,降低异常概率。 ![路径监听](./doc/images/app/statwatch.png) - 更改配置 这里的更改配置是针对节点的,并不会作用到其他节点,也不会更改配置中心的配置。 设计更改配置的功能需要有一些前提要素,比如必须是 unistar-springcloud 集成的应用,且必须是@ConfigurationProperties 或者@RefreshScode 注解的 Bean,其原理就是 SpringCloud 的环境变更事件。 更改配置一般使用在业务开关上。如果是日志打印你也可以使用日志开关。 ![更改配置](./doc/images/app/configchange.png) - 日志开关 日志开关用于管理线上节点的日志打印,一般用于分析线上问题,配置实时链路追踪,快速定位问题。 日志开关的名称一定要和应用设置的 topic 保持一致,一般来说名称是节点自动上传的,所以选择即可。 日志可以选择多个级别,请注意,这里的级别选择只是开关的选择,日志具体用到的级别还是由代码中的 info 或者 debug 决定的,且取决于你的日志总开关配置,Unistar 日志仅作用在,你的默认日志配置均已打开的情况。 ![日志开关](./doc/images/app/logswitch.png) - 应用限流 应用限流需要手动添加,支持常规限流和触发限流(熔断限流),限流限制的是 QPS,且支持预热,限流处理支持等待或者快速失败。 Unistar 限流没有实现熔断处理,只是抛出限流异常,请自行实现。 ```java try { String deepcall = microApi.hello(name); return "hello micro => " + deepcall; } catch (UnistarLimitException e) { // 可以在此处理,也可以设置OpenFeign的Callback处理 return "hello micro => limited"; } catch (Exception e) { log.error("error: {}", e.getMessage()); return "hello micro => error"; } ``` ![添加限流](./doc/images/limit/applimit.png) - 日志查询 简易版的 ELK 实现,主要是通过把检索行为广播到所有的服务实例,然后在 log 日志文件中根据关键字查询日志,主要用于线上日志跟踪,排查问题。 检索尽量按照订单号之类的标识来进行跟踪,在 unistarcloud 中可以借助 UnistarTraceContext.traceId()来打印跟踪 ID(基于线程变量的) ![日志查询](./doc/images/app/logsearch.png) #### 计划管理 - 计划列表 Unistar 集成了分布式调度系统,可以配置基于 Cron 表达式的定时任务。任务最小周期为 5 秒。 Unistar 任务支持后续计划,在添加计划的表单内,勾选后续计划,则该计划就无需设置 Cron 表达式,且该计划只能作为非后续计划的后继,跟随主计划的周期执行。 配置定时任务的时候有几个主要元素: - 计划时间 Cron 表达式 - 执行的任务 需要预先在基础设置里的任务管理内设置。 这样设计的目的是为了滥用任务系统,同时也为了保持任务选择的统一。 - 节点的组别 默认全部,可选择专用组别,使得任务运行在恰当的服务上,从而减少对整体应用服务的影响度。 ![计划](./doc/images/schedule.png) - 执行记录 每次执行均会保留执行记录,同时针对异常执行可以手工恢复。 执行记录保持的时间可在 Unistar 启动时配置,由 Master 节点决定。 #### 基础管理 - 命名空间 Unistar 为隔离不同业务或者不同环境,设计了命名空间来区分,不同命名空间之间互不干扰,完全隔离。 在控制台的左上角可以切换管理的空间。 - 分组管理 用于对服务进行分组,目前应用在任务执行器上。 - 任务管理 调度器支持的任务名称需要在此预先配置,防止恶意调度。 - 公共配置 配置公共的参数,比如数据库,缓存等连接参数。 #### 系统管理 - 集群管理 主要列出所有的 Unistar 中心服务,并标记出当前的 Master、选举状态和任务执行状态。 - 操作员管理 Unistar 支持配置不同的操作员,支持角色和应用两元素管理,角色分为超级管理员,应用管理员和任务管理员。 - 操作员日志 所有操作员对于参数更新、状态更新等变化的操作日志都会保留下来,可在 Unistar 中心配置日志保留周期,由 Master 决定。