当前位置: 首页 > news >正文

网站可免费做深圳龙华区好玩的地方

网站可免费做,深圳龙华区好玩的地方,网站备案是在哪里查,免费ppt模板下载简约Dubbo发布代码中#xff0c;自带了一个简易的监控中心实现。对于一般的小业务这个监控中心应该能够满足需求#xff0c;对于那些大业务量的大公司一般都会有自己的监控中心#xff0c;更加丰富的功能如常用的报警短信通知等等。这章讲解分析使得读者能够了解一般的监控中心实… Dubbo发布代码中自带了一个简易的监控中心实现。对于一般的小业务这个监控中心应该能够满足需求对于那些大业务量的大公司一般都会有自己的监控中心更加丰富的功能如常用的报警短信通知等等。这章讲解分析使得读者能够了解一般的监控中心实现也使得有自己接入监控中心需求的大概知道如何集成自己的监控中心实现。下面我们就以dubbo自带的监控中心开始讲解。   监控中心 1.  监控中心启动我们先看下dubbo的属性文件 dubbo.containerlog4j,spring,registry,jetty dubbo.application.namesimple-monitor dubbo.application.owner dubbo.registry.addresszookeeper://127.0.0.1:2181 dubbo.protocol.port7070 dubbo.jetty.port8080 dubbo.jetty.directory${user.home}/monitor dubbo.charts.directory${dubbo.jetty.directory}/charts dubbo.statistics.directory${user.home}/monitor/statistics   相比于provider, consumer的启动注册中心多了registry, jetty容器启动 它们都是基于dubbo的spi扩展机制的。 SpringContainer容器启动就是加载classpath*:META-INF/spring/ *.xml spring的配置文件 beanidmonitorServiceclasscom.alibaba.dubbo.monitor.simple.SimpleMonitorService        propertynamestatisticsDirectoryvalue${dubbo.statistics.directory}/        propertynamechartsDirectoryvalue${dubbo.charts.directory}/ /bean dubbo:applicationname${dubbo.application.name}owner${dubbo.application.owner}/ dubbo:registryaddress${dubbo.registry.address}/ dubbo:protocolnamedubboport${dubbo.protocol.port}/ dubbo:serviceinterfacecom.alibaba.dubbo.monitor.MonitorServicerefmonitorServicedelay-1/ dubbo:referenceidregistryServiceinterfacecom.alibaba.dubbo.registry.RegistryService/   2. SimpleMonitorService 监控中心配置了监控服务的实现SimpleMonitorService, 并且作为一个普通的dubbo服务暴露到注册中心供服务的提供者和服务的消费方调用将服务提供者和服务的消费方的调用数据保存到监控中心。 监控服务的接口定义 public interface MonitorService {     /**      * 监控数据采集.      * 1. 支持调用次数统计count://host/interface?applicationfoomethodfooprovider10.20.153.11:20880success12failure2elapsed135423423      * 1.1host,application,interface,group,version,method记录监控来源主机应用接口方法信息。      * 1.2 如果是消费者发送的数据加上provider地址参数反之加上来源consumer地址参数。      * 1.3 success,faulure,elapsed 记录距上次采集调用的成功次数失败次数成功调用总耗时平均时间将用总耗时除以成功次数。      *      * paramstatistics      */     void collect(URLstatistics);       /**      * 监控数据查询.       * 1. 支持按天查询count://host/interface?applicationfoomethodfoosideproviderviewchartdate2012-07-03      * 1.1host,application,interface,group,version,method查询主机应用接口方法的匹配条件缺失的条件的表示全部host用0.0.0.0表示全部。      * 1.2 sideconsumer,provider 查询由调用的哪一端采集的数据缺省为都查询。      * 1.3 缺省为viewsummary返回全天汇总信息支持viewchart表示返回全天趋势图表图片的URL地址可以进接嵌入其它系统的页面上展示。      * 1.4 date2012-07-03指定查询数据的日期缺省为当天。      *      * param query      * returnstatistics      */     ListURL lookup(URL query); }   注: lookup方面可能在开源过程中依赖了阿里的什么系统并没有具体的实现如果使用着需要此功能则需要根据接口定义自己实现   MonitorService的dubbo默认实现SimpleMonitorService Collect方法被远程调用后将数据url(传过来的url包含监控需要的数据)保存到一个阻塞队列中BlockingQueueURL 启动定时任务将统计日志记录到本地, String filename ${user.home}/monitor/statistics                          /  day                          / statistics.getServiceInterface()                          / statistics.getParameter(METHOD)                          /  consumer                          /  provider                          /  type  .  key 这是文件在本地存储的格式 文件内容如图保存时间方法消费耗时   3. 起定时任务利用JFreeeChart绘制图表,保存路径 ${user.home}\monitor\charts\date\interfaceName\methodName       产生监控数据 注册中心暴露了MonitorService服务它是被谁调用的呢监控中心的数据是从哪里来呢下面我们看下服务提供方与服务的消费方式如何介入监控中心的。 在服务的提供方跟消费方的dubbo配置加入如下配置 通过注册中心dubbo:monitor protocolregistry / 或者直连  dubbo:monitor address127.0.0.1:7070 / 在构建服务的调用链的时候有如上基于监控的扩展下面我们就来看下这个类 Activate(group {Constants.PROVIDER, Constants.CONSUMER}) //此过滤器在服务的提供方服务的消费方应用中被激活也就是起作用 public class MonitorFilter implements Filter { private MonitorFactory monitorFactory;     public Result invoke(Invoker?invoker, Invocation invocation) throws RpcException {     if(invoker.getUrl().hasParameter(Constants.MONITOR_KEY)) {          //有注监控中心处理 1.  获取invoker的调用上下文 2.  记录起始时间戳 3.  并发计数加一 try { 4.  调用调用链的下一步 5.  采集调用信息 } finally { 6.  并发计数减一 }     } else {          //没有配置监控中心直接往下调用          return invoker.inovke(invocation);    } }   上面第5点信息采集 1. 计算调用耗时 2. 获取并发数 3. 获取服务名称 4. 获取方法名 5. 判断是服务消费方监控还是服务提供方监控 6. 由工厂类monitorFactory.getMonitor(监控url)获取DubboMonitor对象 构建调用监控中心服务的的Url url中包括了监控中心所需的监控信息 monitor.collect(newURL(Constants.COUNT_PROTOCOL,                   NetUtils.getLocalHost(),localPort,                   service / method,                   MonitorService.APPLICATION, application,                    MonitorService.INTERFACE,service,                    MonitorService.METHOD,method,                    remoteKey, remoteValue,                    error ?MonitorService.FAILURE : MonitorService.SUCCESS, 1,                    MonitorService.ELAPSED,String.valueOf(elapsed),                    MonitorService.CONCURRENT,String.valueOf(concurrent),                    Constants.INPUT_KEY, input,                   Constants.OUTPUT_KEY, output));   DubboMonitor是调用监控中心的服务的封装之所以没有直接调监控中心而是通过DubboMonitor调用是因为监控是附加功能不应该影响主链路更不应该损害主链路的新能DubboMonitor采集到数据后通过任务定时调用监控中心服务将数据提交到监控中心。   RegistryContainer 监控中心refer引用了注册中心暴露的RegistryService服务主要是被下面的RegistryContainer使用的。   RegistryContainer主要是到注册中心收集服务分组版本信息并注册回调当注册中心数据发生变化的时候更新到监控中心 下面看下RegistryContainer的start方法流程 1. 通过SpringContainer获取前面初始化的RegistryService, 得到其实是对注册中心的一个远程代理服务 2. 构建订阅注册中心数据的URL看可以看出下面的url是订阅服务提供者和服务消费者的所有服务 subscribeUrl  newURL(Constants.ADMIN_PROTOCOL, NetUtils.getLocalHost(), 0,,                 Constants.INTERFACE_KEY,Constants.ANY_VALUE,//所有服务                 Constants.GROUP_KEY,Constants.ANY_VALUE,//所有分组                 Constants.VERSION_KEY, Constants.ANY_VALUE,//所有版本                 Constants.CLASSIFIER_KEY,Constants.ANY_VALUE,//所有分类 Constants.CATEGORY_KEY,Constants.PROVIDERS_CATEGORY  ,  Constants.CONSUMERS_CATEGORY,//服务的提供者和服务的消费者                  Constants.CHECK_KEY,String.valueOf(false));//不检查 3.  调注册中心服务registry.subscirbe(subscribeUrl,listener)订阅所有数据, NotifyListener在监控中心暴露为回调服务由注册中心回调 回调接口NotifyListener实现的功能主要是按服务提供者和服务的消费者分类收集服务名称服务的url服务提供方或者消费方的系统相关信息。 同时提供了一系列方法供注册中心调用查询。   JettyContainer 监控中心将采集到的信息通过内置jetty来展现给用户这里为了不依赖与jsp, velocityfreemarker等一些编写web应用的技术采用在servlet中将htmlcssjs打印出来 JettyContainer的start方法启动了内置的jettyweb容器 将监控中心访问的本地文件目录设置到ResourceFilter中并设置这个filter的访问映射到jetty中   ResourceFilter主要是读取本地保存的JFreeChart绘制的图片到浏览器中去。 将监控中心的前置控制器PageServlet, 以及这个servlet的访问映射配置到jetty中。之所以叫PageServet为前置控制器就像其他的mvc框架一样用来分发具体的业务类   PageServet的init初始化方法在web容器启动的时候加载所有的页面处理器PageHandler, 用来根据不同的请求生成不同的页面前面说过这里页面html都是通过java代码打印出来的。 PageServet的init方法加载所有PageHandler时会判断PageHandler上是否有Menu注解将有注解的PageHandler加入集合以被HomePageHandl er用来生成主页以及各个页面的uri PageServet的doGet, doPost接收浏览器请求请求以xx.hml形式xx就是PageHandler扩展的key找到对应的PageHandler绘制对应的页面返回给浏览器。     Menu(name Home,desc Home page., order Integer.MIN_VALUE) //有注解 name跟desc属性都是在页面中展示给用户看的 public class HomePageHandlerimplements PageHandler {     public Page handle(URL url) {         ListListString rows new ArrayListListString();         for (PageHandler handler :PageServlet.getInstance().getMenus()) {             String uri ExtensionLoader.getExtensionLoader(PageHandler.class).getExtensionName(handler); //这个uri其实就是PageHandler扩展配置的key页面中用它来请求选择具体的handler绘制     //出具体的page             Menu menu handler.getClass().getAnnotation(Menu.class);             ListString row newArrayListString();             row.add(ahref\ uri .html\ menu.name() /a);             row.add(menu.desc());             rows.add(row);         }         return new Page(Home,Menus,  new String[]{Menu Name, Menu Desc}, rows);  //一个Page实体就是一个页面这里包含所有主要HomePage的页面内容     } }   PageHandler的在com.alibaba.dubbo.container.page.PageHandler文件中的扩展配置 indexcom.alibaba.dubbo.container.page.pages.HomePageHandler providerscom.alibaba.dubbo.monitor.simple.pages.ProvidersPageHandler consumerscom.alibaba.dubbo.monitor.simple.pages.ConsumersPageHandler 。。。。 下面截图看下dubbo大概提供了哪些扩展  下面截几张图看看监控中心的页面。 转载于:https://www.cnblogs.com/duyinqiang/p/5696319.html
http://www.yutouwan.com/news/162330/

相关文章:

  • 招投标 网站建设网站开发的关键
  • 学生模拟网站开发项目做网站的图片大小是多少
  • 网站显示百度众测是怎么做的去掉 wordpress
  • 柳市做网站拓者吧室内设计吧
  • 广州最好的网站建设公司长沙网站建设 网站设计
  • 洛阳最好的做网站的公司广州比较好的外贸公司有哪些
  • 都昌县建设局网站微信公众号开发网站开发
  • 建设银行官方个人网站卢沟桥做网站的公司
  • 网站在当地做宣传如何把网站放在主机上
  • 江苏省交通运输厅门户网站建设管理中心天猫网站建设的目标是什么意思
  • 网站设计好网站百度指数查询移动版
  • 展台设计网站都有哪些找做网站的客户
  • 网站建设2种账号体系下载app免费下载app
  • 蛋白质结构预测工具网站开发全部游戏免费(试玩)不用下载
  • 湖北网站建设电话南昌市建设工程质量监督站网站
  • 网站收索流量怎么登陆wordpress
  • 企业网站源码 多语言wordpress视频防止下载
  • 网络公司给销售公司做网站足球比赛直播中国队
  • 通付盾 网站建设盐城公司网站建设
  • 地产网站设计河北住房和城乡建设部网站
  • 用别人网站名做长尾关键词企业门户网建设
  • 哪家网站优化公司好wordpress发布时链接地址依然指向本地而不是域名解决方法
  • 美橙互联 网站备案wordpress怎么加404
  • wordpress 大学 主题seo排名软件哪个好
  • 做家教在哪个网站找百度资源共享链接分享组
  • 莱芜区都市网莱芜杂谈排名优化网站建设
  • 网站建设手机端技术培训学校机构
  • 阳江市住房和城乡规划建设局网站浙江省工程信息网官网
  • 济宁专业网站开发公司wordpress插件上传图片
  • 视频网站建设 知乎茶叶网页设计模板图片