百度地图的一些理念,绝对走在谷歌地图前面——国庆改版,谷歌地图基本都是走百度地图的路,混合模式、通勤预测,分别对应百度地图的智行和未来出行,百度地图是全球第一个强调AI驱动的,将语音交互、智能预测、AR...比如智能语音导航,百度地图支持对话式的、复杂的自然语音导航,你可以说“小度小度,我想要开车从广州同和地铁站途径体育西路去海珠广场再回元岗路”,百度地图也可以准确识别。...不过,我去了日本发现百度地图用起来丝毫不比谷歌地图差,有些功能百度地图做得更好。...15年我在《中国科技媒体的崇洋情结》一文就指出了这样的现象:国外科技公司的动作就值得关注,国外科技公司的做法就是创新,国外科技公司就比中国公司更有情怀,为什么会有这样的现象?...没想到几年过去,中国科技公司一日千里,有些人不看在眼里,还是有这样的偏见。几十年过去了,中国科技公司早已不是当年的中国科技公司。
作者 | 孙高飞 快速了解普罗米修斯 普罗米修斯是用 go 语言编写的软件并且利用了 go 语言的交叉编译特性编译成了纯二进制文件, 运行的时候不需要额外安装依赖。 直接从官网上下载就可以。...然后在普罗米修斯的配置文件上配置上这个 node_exporter 的地址即可。 普罗米修斯的主服务自然会周期性的去拉监控数据并保存在本地。...我们在普罗米修斯的 UI 上或者通过 grafana, HTTP 接口等查询监控数据的时候, 都是主服务直接查询本地的时序数据库返回的结果。...上面是普罗米修斯的架构图。 刚才说过普罗米修斯是 pull 架构, 主服务会根据配置的时间参数周期性的拉取各个 exporter 提供的接口来抓取数据。...但是这样的架构有两个缺陷: 需要 exporter 是一个持续运行着的并且对外暴露 http 接口的服务, 可是有些时候我们的监控数据的收集不能满足这样的条件 主服务周期性的抓取数据, 就会有事件遗漏的可能性
快速了解普罗米修斯普罗米修斯是用 go 语言编写的软件并且利用了 go 语言的交叉编译特性编译成了纯二进制文件, 运行的时候不需要额外安装依赖。 直接从官网上下载就可以。...然后在普罗米修斯的配置文件上配置上这个 node_exporter 的地址即可。 普罗米修斯的主服务自然会周期性的去拉监控数据并保存在本地。...我们在普罗米修斯的 UI 上或者通过 grafana, HTTP 接口等查询监控数据的时候, 都是主服务直接查询本地的时序数据库返回的结果。...图片上面是普罗米修斯的架构图。 刚才说过普罗米修斯是 pull 架构, 主服务会根据配置的时间参数周期性的拉取各个 exporter 提供的接口来抓取数据。...但是这样的架构有两个缺陷:需要 exporter 是一个持续运行着的并且对外暴露 http 接口的服务, 可是有些时候我们的监控数据的收集不能满足这样的条件主服务周期性的抓取数据, 就会有事件遗漏的可能性
简介为什么需要普罗米修斯?普罗米修斯官网的首页简单的对普罗米修斯做了定义:从指标到洞察力 ,普罗米修斯通过领先的开源监控解决方案为用户的指标和告警提供强大的支持。...从官方文档参考到的内容如下所示:图片 可以看到普罗米修斯在多维度指标监控告警等方面拥有强大的支持,下面就进入正题,从普罗米修斯的架构到入门案例来看下如何使用普罗米修斯进行服务指标监控。...架构下面就直接来看下Prometheus 的架构及其一些生态系统组件:图片这个图完整的体现了普罗米修斯从发现服务,采集数据,到监控告警分析数据的整个过程: 图片初步了解了普罗米修斯的一些概念,想要优雅的使用普罗米修斯监控还需要我们了解一些常见术语...导出器公开 普罗米修斯 指标,通常是将以非 普罗米修斯 格式公开的指标转换为 普罗米修斯 支持的格式。PromQL(普罗米修斯查询语言) PromQL是普罗米修斯查询语言。...The Four Golden Signals(四大黄金信号)图片 Google SRE中提到的概念,监控的四个黄金信号是延迟、流量、错误和饱和度。
我们先来看一下我自己编写的 exporter 的接口, 看看它向普罗米修斯的主服务返回的监控数据是什么样的。...由于我是使用普罗米修斯的 python client 编写的 exporter, 所以它自带了 python 的多个监控指标。...在这个语句的后面有一个 [5m] 意思是查询最近 5 分钟的数据, 这时候会返回最近 5m 内采集到的所有指标。...prometheus_tsdb_compaction_chunk_range_bucket{le="2.62144e+07"} 780 prometheus_tsdb_compaction_chunk_range_bucket{le="+Inf...PromQL 的基本语法 我们直接用指标的名称进行查询的话,就可以返回该指标的所有数据了。
为什么要使用Micrometer?...自己埋点当然也可以既然有现成的工具又何必造轮子,下面可以看下Micrometer的特性: **度指标: 默认提供计时器、仪表、计数器**、分布摘要和长任务计时器等指标与中立的接口。...指标注册表MeterRegistry 可以看到我们最终想要获取的数据其实就是一个一个的Meter(指标)数据,Meter(指标)是用于收集应用程序的一组测量值,Meter(指标)在Micrometer中有单独指标接口类型为...普罗米修斯注册表PrometheusMeterRegistry : 当使用普罗米修斯监控时,引入的micrometer-registry-prometheus这个依赖中提供了一个PrometheusMeterRegistry...用于将指标数据转换为普罗米修斯识别的格式和导出数据等功能。
普罗米修斯(Prometheus)是一个SoundCloud公司开源的监控系统。...这就是为什么你从架构图里能看到两个 Pull metrics 的原因,一个是采集器直接被Server拉取数据(pull);另一个是采集器主动Push数据到Push Gateway,Server再对Push...在该例子中,我们要监视Web服务器返回的HTTP错误的数量。 使用普罗米修斯语言,单个Web服务器单元称为实例(主机实例)。该任务是计算所有实例的HTTP错误数量。...普罗米修斯也内置了自己的SQL查询语言用于查询和检索数据,这个内置的语言就是PromQL。 我们前面说过,普罗米修斯的数据是用键值对表示的。PromQL也用相同的语法查询和返回结果集。...因此该公司使用普罗米修斯来监视其MySQL多主群集和一个12节点的Cassandra环,该环可容纳约4TB的数据。普罗米修斯在初步测试中表现良好。
简介 为什么需要Prometheus? 普罗米修斯官网的首页简单的对普罗米修斯做了定义:从指标到洞察力 。 普罗米修斯通过领先的开源监控解决方案为用户的指标和告警提供强大的支持。...2012年开源的普罗米修斯监控系统从开源到现在经过了数十年的打磨具备如下特性: 可以看到普罗米修斯在多维度指标监控告警等方面拥有强大的支持。...下面就进入正题,从普罗米修斯的架构到入门案例来看下如何使用普罗米修斯进行服务指标监控。...导出器公开 普罗米修斯 指标,通常是将以非 普罗米修斯 格式公开的指标转换为 普罗米修斯 支持的格式。 PromQL(普罗米修斯查询语言) PromQL是普罗米修斯查询语言。...The Four Golden Signals(四大黄金信号) Google SRE中提到的概念,监控的四个黄金信号是延迟、流量、错误和饱和度。
如果你后面对系统异常做告警,那这些异常将会干扰告警的准确度,你也不能去过滤业务异常,因为自定义的业务异常种类也不少。 ③同时我们对 Agent 进行了二开。采集更详细的 GC、堆栈、内存、线程信息。...④服务器采集我们采用普罗米修斯。...甚至有些服务还打印着 Debug 级别的日志。在成本、资源的有限条件下,所有所有的日志是不现实的,即使资源允许,一年下来将是一比很大的开销。 所以我们采用了过滤、清洗、动态调整日志优先级采集等方案。...为什么还要 ETL 过滤器呢? 因为我们的日志服务资源有限,但不对啊,原来的日志分散在各各服务的本地存储介质上也是需要资源的哈。...⑦可视化界面我们主要使用 Grafana,它支持的众多数据源中,其中就有普罗米修斯和 Elasticsearch,与普罗米修斯可谓是无缝对接。而 Kibana 我们主要用于 APM 的可视分析。
其三、自定义的业务异常,该异常属于非系统异常,属于业务范畴,APM会把这类异常当成系统异常上报,如果你后面对系统异常做告警,那这些异常将会干扰告警的准确度,你也不能去过滤业务异常,因为自定义的业务异常种类也不少...服务器采集我们采用普罗米修斯。...甚至有些服务还打印着debug级别的日志。在成本、资源的有限条件下,所有所有的日志是不现实的,即使资源允许,一年下来将是一比很大的开销。所以我们采用了过滤、清洗、动态调整日志优先级采集等方案。...为什么还要ETL过滤器呢?因为我们的日志服务资源有限,但不对啊,原来的日志分散在各各服务的本地存储介质上也是需要资源的哈。...可视化界面我们主要使用grafana,它支持的众多数据源中,其中就有普罗米修斯和elasticsearch,与普罗米修斯可谓是无缝对接。
如果你后面对系统异常做告警,那这些异常将会干扰告警的准确度,你也不能去过滤业务异常,因为自定义的业务异常种类也不少。 ③ 同时我们对 Agent 进行了二开。...④ 服务器采集我们采用普罗米修斯。...甚至有些服务还打印着 Debug 级别的日志。在成本、资源的有限条件下,所有所有的日志是不现实的,即使资源允许,一年下来将是一比很大的开销。 所以我们采用了过滤、清洗、动态调整日志优先级采集等方案。...为什么还要 ETL 过滤器呢? 因为我们的日志服务资源有限,但不对啊,原来的日志分散在各各服务的本地存储介质上也是需要资源的哈。...⑦可视化界面我们主要使用 Grafana,它支持的众多数据源中,其中就有普罗米修斯和 Elasticsearch,与普罗米修斯可谓是无缝对接。而 Kibana 我们主要用于 APM 的可视分析。
它可以大大帮助你简化监控的复杂度,你只需要提供你需要监控的数据,它就可以帮你生成各种可视化仪表。同时它还有报警功能,可以在系统出现问题时通知你。...而我们起的另一个服务,叫 Prometheus (中文名普罗米修斯数据库)则是负责存储和查询数据的。...那么你就需要在你自己的服务器中把数据发送给普罗米修斯数据库。当然,你完全可以把数据发送给 MySQL (Grafana 也支持),但普罗米修斯几乎是标配的时序数据库,强烈建议你用。...用一张图来说明它们之间的关系: 这里,最左边的 Docker 服务会将服务的数据发送给中间的普罗米修斯(对应上文的 Prometheus-exporter),而最右边的 Grafana 会查询中间的普罗米修斯...你可能会问,为什么不是 localhost:9090 呢?原因是,我们用了 docker-compose 起的三个服务,可以把它们想象成三台独立的服务器,因此需要用一个域名来互相通信。
它可以大大帮助你简化监控的复杂度,你只需要提供你需要监控的数据,它就可以帮你生成各种可视化仪表。同时它还有报警功能,可以在系统出现问题时通知你。...而我们起的另一个服务,叫 Prometheus (中文名普罗米修斯数据库)则是负责存储和查询数据的。...那么你就需要在你自己的服务器中把数据发送给普罗米修斯数据库。当然,你完全可以把数据发送给 MySQL (Grafana 也支持),但普罗米修斯几乎是标配的时序数据库,强烈建议你用。...这里,最左边的 Docker 服务会将服务的数据发送给中间的普罗米修斯(对应上文的 Prometheus-exporter),而最右边的 Grafana 会查询中间的普罗米修斯,来展示仪表盘。...你可能会问,为什么不是 localhost:9090 呢?原因是,我们用了 docker-compose 起的三个服务,可以把它们想象成三台独立的服务器,因此需要用一个域名来互相通信。
即将退出历史的舞台 - 普罗米修斯 时代的新秀 - 维多利亚 吃螃蟹的代价 - 踩坑 普罗米修斯拯救维多利亚 - 用监控系统来分析监控系统的问题...- 数据缺失 找到病灶 - 限流 一个老难题 - 资源配额 切除阑尾 - 开发团队的做法即将退出历史的舞台 - 普罗米修斯普罗米修斯(...当今云原生的复杂度已今非昔比,分布式、海量数据、高可用等使prometheus越来越难以满足用户的需求。...为什么SSD的机器反而出问题?还是前期cache上涨导致的连锁反应?是否cache回收出问题了?数量上涨,无外乎于要么是生产太快,要么是消费太慢导致的积压。...要改进限流,第一个容易想到的就是加大读写并行度,就需要在有写请求的时候增加允许读的限流阈值。那么增加多少合理?还是自适应?
在PowerBI中,度量值返回空值和返回0是两回事。数据表里没有数或者是空值算出来会是空值,数据表中有数算出来是0才是0。...这时空值对应的维度字段的值也会显示出来,但是显示为空,有些用户希望这个空显示为0。还有一种情况,在卡片图中,这种空,会直接显示成“(空白)”,有些用户希望这个空白也显示为0。...解决方案 通常情况下,针对度量值返回空值,把度量值在末尾+0或者使用条件判断空值返回0,就能解决问题。...举例模型度量值销量:Sales = SUM('订单表'[数量])度量值+0:Sales+0 = SUM('订单表'[数量])+0度量值使用条件判断:Sales_IF_Blank = IF(ISBLANK...这个时候需要再增加一层条件判断,如果当前上下文的最小日期大于订单表的最大日期,就返回空,否则返回补0的度量值。
Path with "WEB-INF" or "META-INF": [WEB-INF/jsp/welcome.jsp] 问题解决: 因为spring boot 不推荐使用jsp。...-- jsp支持 end --> 有些朋友会问,为什么非要添加这两个依赖呢? 这两个是参考spring boot 官方给出的simple-jsp的demo 官方git中demo如下图: ?...如果先要使用多视图解析的话 例外,如果出现freemarker模版引擎和jsp技术同时存在的话,springmvc会根据解析器的优先级来返回具体的视图,默认,FreeMarkerViewResolver...的优先级大于InternalResourceViewResolver的优先级,所以同时存在的话,会返回freemarker视图
在整合过程中遇到了错误: 在访问页面的时候: 页面错误: 日志错误: Path with "WEB-INF" or "META-INF": [WEB-INF/jsp/welcome.jsp] 问题解决...-- jsp支持 end --> 有些朋友会问,为什么非要添加这两个依赖呢?...如果先要使用多视图解析的话 例外,如果出现freemarker模版引擎和jsp技术同时存在的话,springmvc会根据解析器的优先级来返回具体的视图,默认,FreeMarkerViewResolver...的优先级大于InternalResourceViewResolver的优先级,所以同时存在的话,会返回freemarker视图
1.3 底层结构ZSet与Java中的TreeSet有些类似,但底层数据结构却差别很大。ZSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序。...返回score值介于-inf到+inf之间(含两端)的成员(score从小到大)1) "first"2) "second"3) "third"4) "four"127.0.0.1:6379> zrangebyscore...2.3.3 为什么需要跳表(WHY)/跳表高效的动态插入和删除因为普通链表查找一个元素 时间复杂度O(n);而跳表查找的时间复杂度为O(logn),查找速度更快。...,而不是B+树/红黑树/二叉树1)ZSet为什么不用B+树,而用跳表时间复杂度优势:跳表是一种基于链表的数据结构,可以在O(log n)的时间内进行插入、删除和查找操作。...2)ZSet为什么不用红黑树、二叉树红黑树、二叉树查找一个元素的时间复杂度也是O(logn)ZSet有个核心操作,范围查找:跳表效率比红黑树高,跳表可以做到 logn 时间复杂度内,快速查找,找到区间起点