# 总体介绍 OCP能力平台满足微服务架构应用的非功能性需求(Non-functional Requirements,NFR),非功能性需求与应用本身无关,在项目开发中积累的与非功能性需求相关的经验,可以更容易地在不同的项目中复用。不过非功能性需求所涵盖的内容很多,一个应用不可能满足全部的需求,而且有些非功能性需求也存在冲突,本文将介绍OCP能力平台提供的通用功能 ## 服务管理 通过OCP能力平台,可以调用注册中心提供的各种管理接口来实现服务的管理。根据我的经验,服务管理一般包括以下几种操作: * 服务上下线。当上线一个新服务的时候,可以通过调用注册中心的服务添加接口,新添加一个服务,同样要下线一个已有服务的时候,也可以通过调用注册中心的服务注销接口,删除一个服务。 * 节点添加/删除。当需要给服务新添加节点时候,可以通过调用注册中心的节点注册接口,来给服务新增加一个节点。而当有故障节点出现或者想临时下线一些节点时,可以通过调用注册中心的节点反注册接口,来删除节点。 * 服务查询。这个操作会调用注册中心的服务查询接口,可以查询当前注册中心里共注册了多少个服务,每个服务的详细信息。 * 服务节点查询。这个操作会调用注册中心的节点查询接口,来查询某个服务下一共有多少个节点。 ## 服务治理 通过OCP能力平台,可以调用配置中心提供的接口,动态地修改各种配置来实现服务的治理。根据我的经验,常用的服务治理手段包括以下几种: * 限流。一般是在系统出现故障的时候,比如像微博因为热点突发事件的发生,可能会在短时间内流量翻几倍,超出系统的最大容量。这个时候就需要调用配置中心的接口,去修改非核心服务的限流阈值,从而减少非核心服务的调用,给核心服务留出充足的冗余度。 * 降级。跟限流一样,降级也是系统出现故障时的应对方案。要么是因为突发流量的到来,导致系统的容量不足,这时可以通过降级一些非核心业务,来增加系统的冗余度;要么是因为某些依赖服务的问题,导致系统被拖慢,这时可以降级对依赖服务的调用,避免被拖死。 ## 服务监控 OCP能力平台一般包括两个层面的监控。一个是整体监控,比如服务依赖拓扑图,将整个系统内服务间的调用关系和依赖关系进行可视化的展示;一个是具体服务监控,比如服务的QPS、AvgTime、P999等监控指标。其中整体监控可以使用服务追踪系统提供的服务依赖拓扑图,而具体服务监控则可以通过Grafana等监控系统UI来展示。 ## 问题定位 OCP能力平台实现问题定位,可以从两个方面来进行。一个是宏观层面,即通过服务监控来发觉异常,比如某个服务的平均耗时异常导致调用失败;一个是微观层面,即通过服务追踪来具体定位一次用户请求失败具体是因为服务调用全链路的哪一层导致的。 ## 日志查询 OCP能力平台可以通过接入类似ELK的日志系统,能够实时地查询某个用户的请求的详细信息或者某一类用户请求的数据统计。