 大规模分布式系统架构下调测能力构建之道大规模分布式系统架构下调测能力构建之道 李鑫 大纲 分布式环境下开发的调测效率问题 应对之道 远程应用服务 契约测试 分布式消息服务 分布式缓存 分布式服务的“租户”隔离策略 总体调测框架实践 分布式环境下调测方法论 单体应用 服务化 微服务 小中型规模应用+小型团队 中大型规模应用+多团队协同 Cache DB NFS Load Balancer Gateway 分布式文件 分布式缓存 分布式消息 DB Cluster 连接 序列化 路由 负载均衡 … 问题示例 1. 我依赖一个远程服务,但在负责它的团队把它上线之前,我什 么也做不了 2. 我负责的功能依赖一堆的远程服务,为了本地调测,我必须从 头到尾梳理代码,再写一堆的mock语句把他们全mock掉了。 每当业务逻辑变化了,代码中要增减相应的mock语句;每当依 赖 用例的修改工作贯穿于整个开发工作之中。 3. 我和某同事通过服务框架进行调用联调,结果另一同事也把同 名服务挂了上来,不幸的是,他的服务版本和我们的不一样, 结果,一系列的灵异状况发生了… 4. 依赖的远程服务逻辑发生变化了,但负责它的团队没有通知到 我,结果上线后直接导致生产事故。 5. 我和其他团队共用一套分布式缓存服务,为了防止数据覆盖, 我只能和别人轮流排队上线调试,我等了一天,结果只能用一0 码力 | 19 页 | 2.74 MB | 1 年前3 大规模分布式系统架构下调测能力构建之道大规模分布式系统架构下调测能力构建之道 李鑫 大纲 分布式环境下开发的调测效率问题 应对之道 远程应用服务 契约测试 分布式消息服务 分布式缓存 分布式服务的“租户”隔离策略 总体调测框架实践 分布式环境下调测方法论 单体应用 服务化 微服务 小中型规模应用+小型团队 中大型规模应用+多团队协同 Cache DB NFS Load Balancer Gateway 分布式文件 分布式缓存 分布式消息 DB Cluster 连接 序列化 路由 负载均衡 … 问题示例 1. 我依赖一个远程服务,但在负责它的团队把它上线之前,我什 么也做不了 2. 我负责的功能依赖一堆的远程服务,为了本地调测,我必须从 头到尾梳理代码,再写一堆的mock语句把他们全mock掉了。 每当业务逻辑变化了,代码中要增减相应的mock语句;每当依 赖 用例的修改工作贯穿于整个开发工作之中。 3. 我和某同事通过服务框架进行调用联调,结果另一同事也把同 名服务挂了上来,不幸的是,他的服务版本和我们的不一样, 结果,一系列的灵异状况发生了… 4. 依赖的远程服务逻辑发生变化了,但负责它的团队没有通知到 我,结果上线后直接导致生产事故。 5. 我和其他团队共用一套分布式缓存服务,为了防止数据覆盖, 我只能和别人轮流排队上线调试,我等了一天,结果只能用一0 码力 | 19 页 | 2.74 MB | 1 年前3
 Nacos架构&原理
JVM_MS -XX:MetaspaceSiz e 默认 :128m JVM_MMS -XX:MaxMetaspac eSize 默认 :320m NACOS_DEBUG 是否开启远程 DE BUG y/n 默认 :n TOMCAT_ACCESSLOG_ENABLED server.tomcat.ac cesslog.enabled 默认 :false NACOS_AUTH_SYSTEM_TYPE 挑战。原先是单体应用,所有的服务都在⼀个进程中,服务之间的调用就是方法调用,整条请求的 处理流程就在当前线程中,调试、排查问题非常方便。 改造成微服务架构之后,原先单体中的服务变成⼀个个独立部署运行的服务,方法调用变成了远程 调用。首先要解决的问题就是服务发现问题,Consumer 服务如何在运行时发现 Provider 服务, Nacos 生态 < 150 并且独立部署的服务节点的 ip 地址是不固定的,意味着需要⼀种动态发现的能力。注册中心的出 和观察 集群中部署的服务。目前比较火热的云原生技术 ServiceMesh ,其中⼀套比较流行的方案就是采用 Istio + Envoy 实现的。Envoy 作为代理以 SideCar 形式和应用服务部署在⼀起,透明拦截应用服 务所有的入口流量和出入流量,在转发流量之前执行⼀些额外的治理策略,这些操作都是对业务服 务透明的,无感知的。这样⼀来,如果我们把与业务应用耦合的服务治理相关 SDK0 码力 | 326 页 | 12.83 MB | 9 月前3 Nacos架构&原理
JVM_MS -XX:MetaspaceSiz e 默认 :128m JVM_MMS -XX:MaxMetaspac eSize 默认 :320m NACOS_DEBUG 是否开启远程 DE BUG y/n 默认 :n TOMCAT_ACCESSLOG_ENABLED server.tomcat.ac cesslog.enabled 默认 :false NACOS_AUTH_SYSTEM_TYPE 挑战。原先是单体应用,所有的服务都在⼀个进程中,服务之间的调用就是方法调用,整条请求的 处理流程就在当前线程中,调试、排查问题非常方便。 改造成微服务架构之后,原先单体中的服务变成⼀个个独立部署运行的服务,方法调用变成了远程 调用。首先要解决的问题就是服务发现问题,Consumer 服务如何在运行时发现 Provider 服务, Nacos 生态 < 150 并且独立部署的服务节点的 ip 地址是不固定的,意味着需要⼀种动态发现的能力。注册中心的出 和观察 集群中部署的服务。目前比较火热的云原生技术 ServiceMesh ,其中⼀套比较流行的方案就是采用 Istio + Envoy 实现的。Envoy 作为代理以 SideCar 形式和应用服务部署在⼀起,透明拦截应用服 务所有的入口流量和出入流量,在转发流量之前执行⼀些额外的治理策略,这些操作都是对业务服 务透明的,无感知的。这样⼀来,如果我们把与业务应用耦合的服务治理相关 SDK0 码力 | 326 页 | 12.83 MB | 9 月前3
 FISCO BCOS 1.3 中文文档bugs.launchpad.net/ubuntu/" 网络 FISCO BCOS单节点需要使用三个端口: rpc_port、channel_port、p2p_port rpc_port不会有远程访问 channel_port需要被使用web3sdk的服务访问 p2p_port 节点之间通过互联组成p2p网络 实际中, 需要考虑channel_port、p2p_port的网络访问策略, 节点的 的基于区块链的应用架构。以下对各模块进行一一介绍。 应用服务 面向具体业务逻辑的应用服务,如供应链、电商、存证、其他金融业务等。应 用服务依旧可以用类似LAMP,EJB,SSH,微服务等成熟技术开发,业务数 据库可用mysql,oracle等成熟的解决方案来存储不需上链的业务数据,如用户 个人资料、商品介绍、仓储、营销推广数据等。 当在业务流程中产生了一笔 需要上链的交易,如资产转移,由应用服务向区块链发起交易请求,并等待区 块链共识确认。 应用服务可以引入私钥管理的模块,私钥由专用的算法进行加密妥善存储,由 应用服务通过私钥管理模块加载并对交易签名。如机构是代理用户转发交易, 交易是由用户自签名,则机构不需要管理用户私钥。 应用服务通过区块链平台提供的SDK发起交易,SDK向业务层封装网络通信, 协议编解码,异常处理等细节,暴露友好的面向对象的功能接口,如智能合约 定义的转账接口,应用服务面向接口编程,专注于实现业务逻辑,而不需要承0 码力 | 491 页 | 5.72 MB | 1 年前3 FISCO BCOS 1.3 中文文档bugs.launchpad.net/ubuntu/" 网络 FISCO BCOS单节点需要使用三个端口: rpc_port、channel_port、p2p_port rpc_port不会有远程访问 channel_port需要被使用web3sdk的服务访问 p2p_port 节点之间通过互联组成p2p网络 实际中, 需要考虑channel_port、p2p_port的网络访问策略, 节点的 的基于区块链的应用架构。以下对各模块进行一一介绍。 应用服务 面向具体业务逻辑的应用服务,如供应链、电商、存证、其他金融业务等。应 用服务依旧可以用类似LAMP,EJB,SSH,微服务等成熟技术开发,业务数 据库可用mysql,oracle等成熟的解决方案来存储不需上链的业务数据,如用户 个人资料、商品介绍、仓储、营销推广数据等。 当在业务流程中产生了一笔 需要上链的交易,如资产转移,由应用服务向区块链发起交易请求,并等待区 块链共识确认。 应用服务可以引入私钥管理的模块,私钥由专用的算法进行加密妥善存储,由 应用服务通过私钥管理模块加载并对交易签名。如机构是代理用户转发交易, 交易是由用户自签名,则机构不需要管理用户私钥。 应用服务通过区块链平台提供的SDK发起交易,SDK向业务层封装网络通信, 协议编解码,异常处理等细节,暴露友好的面向对象的功能接口,如智能合约 定义的转账接口,应用服务面向接口编程,专注于实现业务逻辑,而不需要承0 码力 | 491 页 | 5.72 MB | 1 年前3
 《Java 应用与开发》课程讲义 - 王晓东应用与开发课程的教学体系如图1所示,包括了 Java SE 和 Java EE 两个部分, 每部分都涉及一些验证性实验,另外,会开展两次稍微大一点的集成开发项目。同时, 在学习的过程中会穿插一些开发工具、设计模式、应用服务器和数据库的基本应用。 在课程学习的过程中,希望同学们要有足够的求知欲,养成良好的学习态度,具 备不断探索的精神,多尝新、多实践、多总结。我想这是计算机专业人士应该具备的 基本素养。 1 具有丰富的图形界面和事件响应机制,进而开发出具有极 高交互性的 Web 应用软件。 15.3.3 Web 容器 • Web 容器(Web Container)运行在符合 Java EE 规范的应用服务器上,驻留在服 务器端,外部应用可以通过HTTP 和 HTTPS协议与 Web 容器通信,进而访问 Web 容器管理的 Web 组件。 • Web 容器管理 Web 组件的运行和调用。Java 用。Java EE 规范定义了 3 种运行在 EJB 容器内的组件:会话 EJB、消息驱动 EJB 和实体 EJB,分别完成不同领域的业务处理。 • EJB 容器运行在符合 Java EE 的应用服务器内,驻留在服务器端。 • 其他组件通过 RMI/IIOP 协议与 EJB 容器通信,通过 EJB 容器来访问 EJB 组件的 业务方法。 EJB 主要应用于重量级企业应用系统开发,在以 Web0 码力 | 330 页 | 6.54 MB | 1 年前3 《Java 应用与开发》课程讲义 - 王晓东应用与开发课程的教学体系如图1所示,包括了 Java SE 和 Java EE 两个部分, 每部分都涉及一些验证性实验,另外,会开展两次稍微大一点的集成开发项目。同时, 在学习的过程中会穿插一些开发工具、设计模式、应用服务器和数据库的基本应用。 在课程学习的过程中,希望同学们要有足够的求知欲,养成良好的学习态度,具 备不断探索的精神,多尝新、多实践、多总结。我想这是计算机专业人士应该具备的 基本素养。 1 具有丰富的图形界面和事件响应机制,进而开发出具有极 高交互性的 Web 应用软件。 15.3.3 Web 容器 • Web 容器(Web Container)运行在符合 Java EE 规范的应用服务器上,驻留在服 务器端,外部应用可以通过HTTP 和 HTTPS协议与 Web 容器通信,进而访问 Web 容器管理的 Web 组件。 • Web 容器管理 Web 组件的运行和调用。Java 用。Java EE 规范定义了 3 种运行在 EJB 容器内的组件:会话 EJB、消息驱动 EJB 和实体 EJB,分别完成不同领域的业务处理。 • EJB 容器运行在符合 Java EE 的应用服务器内,驻留在服务器端。 • 其他组件通过 RMI/IIOP 协议与 EJB 容器通信,通过 EJB 容器来访问 EJB 组件的 业务方法。 EJB 主要应用于重量级企业应用系统开发,在以 Web0 码力 | 330 页 | 6.54 MB | 1 年前3
 Apache Shiro参考手册中文版以及更多——全部集成到紧密结合的易于使用的 API 中。 Shiro 视图在所有应用程序环境下实现这些目标——从最简单的命令行应用程序到最大的企业应用,不强制依赖其 他第三方框架,容器,或应用服务器。当然,该项目的目标是尽可能地融入到这些环境,但它能够在任何环境下立 即可用。 Apache Shiro Features Apache Shiro 是一个拥有许多功能的综合性的程序安全框架。下面的图表展示了 Amazon 而言,isAuthenticated()现在返回是 true。 这种情况在许多类型的应用中发生的是如此的频繁,所以这些功能被内置在 Shiro 中,这样你就能利用它来为 你的应用服务了。现在,无论你使用的是 isRemembered()还是 isAuthenticated()来定制你的视图和工作流都由 你来决定,但 Shiro 将维持这一基本情况以防你需要它。 注销 requestSubject = new Subject.Builder().sessionId(sessionId),buildSubject(); 这给大多数 Web 应用程序及任何编写远程处理或消息框架的人带来了令人难以置信的方便(这事实上是 Shiro 的 Web 支持在自己的框架代码内关联 Subject 和 ServletRequest)。  任何"RememberMe0 码力 | 92 页 | 1.16 MB | 1 年前3 Apache Shiro参考手册中文版以及更多——全部集成到紧密结合的易于使用的 API 中。 Shiro 视图在所有应用程序环境下实现这些目标——从最简单的命令行应用程序到最大的企业应用,不强制依赖其 他第三方框架,容器,或应用服务器。当然,该项目的目标是尽可能地融入到这些环境,但它能够在任何环境下立 即可用。 Apache Shiro Features Apache Shiro 是一个拥有许多功能的综合性的程序安全框架。下面的图表展示了 Amazon 而言,isAuthenticated()现在返回是 true。 这种情况在许多类型的应用中发生的是如此的频繁,所以这些功能被内置在 Shiro 中,这样你就能利用它来为 你的应用服务了。现在,无论你使用的是 isRemembered()还是 isAuthenticated()来定制你的视图和工作流都由 你来决定,但 Shiro 将维持这一基本情况以防你需要它。 注销 requestSubject = new Subject.Builder().sessionId(sessionId),buildSubject(); 这给大多数 Web 应用程序及任何编写远程处理或消息框架的人带来了令人难以置信的方便(这事实上是 Shiro 的 Web 支持在自己的框架代码内关联 Subject 和 ServletRequest)。  任何"RememberMe0 码力 | 92 页 | 1.16 MB | 1 年前3
 Java 应用与开发 - Java EE 体系结构象的生命周期和方法调用。Java EE 规范定义了 3 种运行在 EJB 容器内的组件:�� EJB、�息�动 EJB 和实体 EJB,分别完成不同领域的业务处理。 ▶ EJB 容器运行在符合 Java EE 的应用服务器内,驻留在服 务器端。 ▶ 其他组件通过 RMI/IIOP 协议与 EJB 容器通信,通过 EJB 容器来访问 EJB 组件的业务方法。 EJB 主要应用于重量级企业应用系统开发,在以 Web 概述 Java EE 容器 Java EE 组件 组件间通信协议 EJB 组件 * ▶ EJB 组件运行在符合 Java EE 的应用服务器内,驻留在服 务器端。Java EE 的其他组件,包括 EJB 组件通过 RMI/ IIOP 协议与 EJB 容器通信,远程调用 EJB 的功能方法。 ▶ Java EE 5.0 之前,EJB 性能差,饱受诟病。Rod Johnson1针对 EJB 的缺点,开发了轻量级的企业组件管理0 码力 | 40 页 | 1.89 MB | 1 年前3 Java 应用与开发 - Java EE 体系结构象的生命周期和方法调用。Java EE 规范定义了 3 种运行在 EJB 容器内的组件:�� EJB、�息�动 EJB 和实体 EJB,分别完成不同领域的业务处理。 ▶ EJB 容器运行在符合 Java EE 的应用服务器内,驻留在服 务器端。 ▶ 其他组件通过 RMI/IIOP 协议与 EJB 容器通信,通过 EJB 容器来访问 EJB 组件的业务方法。 EJB 主要应用于重量级企业应用系统开发,在以 Web 概述 Java EE 容器 Java EE 组件 组件间通信协议 EJB 组件 * ▶ EJB 组件运行在符合 Java EE 的应用服务器内,驻留在服 务器端。Java EE 的其他组件,包括 EJB 组件通过 RMI/ IIOP 协议与 EJB 容器通信,远程调用 EJB 的功能方法。 ▶ Java EE 5.0 之前,EJB 性能差,饱受诟病。Rod Johnson1针对 EJB 的缺点,开发了轻量级的企业组件管理0 码力 | 40 页 | 1.89 MB | 1 年前3
 10 WEB攻击与防护技术 徐震 杨亮 《PHP语⾔程序设计》Error Handling 10 WEB攻击与防护技术 徐震 杨亮 《PHP语⾔程序设计》Error Handling- 典型攻击 n 注入类(以其人之道还治其人之身) q SQL注入 q OS命令注入 q LDAP注入 q 远程文件包含 n 绕过防御类(凌波微步) q 目录遍历 q 不安全对象引用 n 跨站类(隔山打牛) q 跨站脚本 q 跨站请求伪造 n 资源消耗类(吸星大法) q 分布式拒绝服务 认证和会话管理失效 q 隐藏变量篡改 n 配置管理类(家法不严) q 不安全的数据存储 q 信息泄露和不正确的参数处理 应用安全问题根源 防火墙/IPS OS Web服务器 应用服务器 防火墙\IPS 数据库系统 遗留系统 Web 服务 目录服务 人力资源 计费 定制开发的应用代码 用户和 攻击者 网络层防护(防火墙, SSL, IDS, OS加固) 网页,或限定字段长度的输入;并注意黑名单验证方式的局限性:仅仅查找或 替换一些字符(如"<" ">"或类似"script"的关键字),很容易被XSS变种攻击绕过 验证机制 32 3.3.远程文件包含 33 概述 n Remote File Inclusion,远程代码包含 q 一些恶意用户利用网站服务器对文件包含过滤不严格而强行 使网站上的代码包含恶意用户自己的文件,以实现执行特定 脚本,达到对网站进行攻击的目的。 0 码力 | 114 页 | 3.65 MB | 1 年前3
 2022年美团技术年货 合辑589 美团高性能终端实时日志系统建设实践 608 后端 622 可视化全链路日志追踪 622 设计模式二三事 647 基于代价的慢查询优化建议 670 Java 系列 | 远程热部署在美团的落地实践 692 日志导致线程 Block 的这些坑,你不得不防 713 基于 AI 算法的数据库异常监测系统的设计与实现 775 目录 < v Replication(上):常见复制模型 相关的成果发表也在 SIGIR 2021 国际会议上,下文将详细介绍该方法。 算法 < 247 3.2 方法介绍 为了解决现有对话摘要难以得到指定信息要素以及缺少标注数据的问题,我们提出了 一个更灵活的、基于远程监督和阅读理解的抽取式摘要模型(Distant Supervision based Machine Reading Comprehension Model for Extractive Summariza- DSMRC-S,总体结构如下图 6 所示: 图 6 DSMRC-S 模型的总体结构 DSMRC-S 由 一 个 基 于 BERT 的 MRC(Machine Reading Comprehension)模 块、远程监督模块和一个基于密度的提取策略组成。在预处理阶段,对话中的 Token 会被自动标注,模型会被训练去预测对话中每个 Token 出现在答案中的概率。然后,基 于上一步预测的概率,一个基于密度的提取策略会被用来提取最合适的0 码力 | 1356 页 | 45.90 MB | 1 年前3 2022年美团技术年货 合辑589 美团高性能终端实时日志系统建设实践 608 后端 622 可视化全链路日志追踪 622 设计模式二三事 647 基于代价的慢查询优化建议 670 Java 系列 | 远程热部署在美团的落地实践 692 日志导致线程 Block 的这些坑,你不得不防 713 基于 AI 算法的数据库异常监测系统的设计与实现 775 目录 < v Replication(上):常见复制模型 相关的成果发表也在 SIGIR 2021 国际会议上,下文将详细介绍该方法。 算法 < 247 3.2 方法介绍 为了解决现有对话摘要难以得到指定信息要素以及缺少标注数据的问题,我们提出了 一个更灵活的、基于远程监督和阅读理解的抽取式摘要模型(Distant Supervision based Machine Reading Comprehension Model for Extractive Summariza- DSMRC-S,总体结构如下图 6 所示: 图 6 DSMRC-S 模型的总体结构 DSMRC-S 由 一 个 基 于 BERT 的 MRC(Machine Reading Comprehension)模 块、远程监督模块和一个基于密度的提取策略组成。在预处理阶段,对话中的 Token 会被自动标注,模型会被训练去预测对话中每个 Token 出现在答案中的概率。然后,基 于上一步预测的概率,一个基于密度的提取策略会被用来提取最合适的0 码力 | 1356 页 | 45.90 MB | 1 年前3
 Laravel 5.1 中文文档namespace App\Providers; class AppServiceProvider extends ServiceProvider { /** * 启动所有应用服务 * * @return void */ public function boot() { view()->share('key' Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider{ /** * 启动所有应用服务 * 本文档由 Laravel 学院(LaravelAcademy.org)提供 80 * @return void */ public Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider{ /** * 启动所有应用服务 * * @return void */ public function boot() { User::creating(function0 码力 | 307 页 | 3.46 MB | 1 年前3 Laravel 5.1 中文文档namespace App\Providers; class AppServiceProvider extends ServiceProvider { /** * 启动所有应用服务 * * @return void */ public function boot() { view()->share('key' Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider{ /** * 启动所有应用服务 * 本文档由 Laravel 学院(LaravelAcademy.org)提供 80 * @return void */ public Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider{ /** * 启动所有应用服务 * * @return void */ public function boot() { User::creating(function0 码力 | 307 页 | 3.46 MB | 1 年前3
 Laravel 5.3 中文文档Validator::make($data, [ 'email' => 'required|email', 'games' => 'required|numeric', ]); 让我们假定我们的 web 应用服务于游戏收集者。如果一个游戏收集者注册了我们的应用并拥有超 过 100 个游戏,我们想要他们解释为什么他们会有这么多游戏,例如,也许他们在运营一个游戏 二手店,又或者他们只是喜欢收集。要添加这种条件,我们可以使用 Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { /** * 启动应用服务 * * @return void */ public function boot() { Validator::extend('foo' 信息定义自定义占位符,可以通过创建 自定义验证器然后调用 Validator 门面上的 replacer 方法来实现。可以在服务提供者的 boot 方 法中编写代码: /** * 启动应用服务 * * @return void */ public function boot(){ Validator::extend(...); Validator::replacer('foo'0 码力 | 691 页 | 9.37 MB | 1 年前3 Laravel 5.3 中文文档Validator::make($data, [ 'email' => 'required|email', 'games' => 'required|numeric', ]); 让我们假定我们的 web 应用服务于游戏收集者。如果一个游戏收集者注册了我们的应用并拥有超 过 100 个游戏,我们想要他们解释为什么他们会有这么多游戏,例如,也许他们在运营一个游戏 二手店,又或者他们只是喜欢收集。要添加这种条件,我们可以使用 Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { /** * 启动应用服务 * * @return void */ public function boot() { Validator::extend('foo' 信息定义自定义占位符,可以通过创建 自定义验证器然后调用 Validator 门面上的 replacer 方法来实现。可以在服务提供者的 boot 方 法中编写代码: /** * 启动应用服务 * * @return void */ public function boot(){ Validator::extend(...); Validator::replacer('foo'0 码力 | 691 页 | 9.37 MB | 1 年前3
共 221 条
- 1
- 2
- 3
- 4
- 5
- 6
- 23














 
  
 