当你对性能进行诊断或者希望知道是什么原因导致 Confluence 崩溃,你希望知道在 Confluence 内部是什么导致这些问题发生的。 这个时候系统的诊断信息能够帮助你获得更多的有关的这些信息。 通常情况下不是偶然发生的,诊断警告将会帮助你构建有关你 Confluence 站点表现的详细快照,然后帮助你来识别导致你这些问题的的症状。 我们将会提供为诊断信息提供 UI,请关注我们的站点来获得有关的更新。 有关诊断警告 系统诊断工具的作用是能够对系统的症状和表现进行持续的监控。 同时将会包含在服务支持的 zip 文件中。 一些表现将会触发一个单一警告,一些其他的操作可能触发多个警告。诊断信息将会存储在数据库中,这些数据每 30 天后会删除。 https://www.cwiki.us/display/CONF6ZH/Confluence+Diagnostics
有时我们出门在外难免会出现网络信号不好的时候,微信会提示“无法连接到服务器”,可能还会弹出一个“诊断网络”的按钮窗口。要是没弹出怎么弄呢?其实微信早就藏着这个彩蛋了,我们没挖掘到而已。 在微信任意聊天窗口输入 //traceroute 并发送,还可以调出“诊断网络”功能。 ? 当微信突然连接网络失败却又无法解决的时候,可以尝试一下。
前情提要:互联网架构为什么要做服务化? 二、互联网微服务架构多“微”才适合 大家也都认可,随着数据量、流量、业务复杂度的提升,服务化架构是架构演进中的必由之路,今天要讨论的话题是:微服务架构多“微”才合适? 细节:微信单对单消息是一个写多读少的业务,故没有缓存。 垂直拆分是个好的方案,将子业务一个个拆出来,那么微信的服务化架构或许会变成这个样子: ? 扩展性更好 (6)… 细粒度拆分的不足也很明显: (1)拆得越细,系统越复杂 (2)系统之间的依赖关系也更复杂 (3)运维复杂度提升 (4)监控更加复杂 (5)出问题时定位问题更难 (6)… 关于微服务架构的
配置参考 集群管理器全局配置 每个群集配置 运行时设置 统计参考 微信公众号 关注微信公众号【首席架构师智库】 微信小号 希望加入的群:架构,云计算,大数据,数据科学,物联网,人工智能,安全,全栈开发 点击加入知识星球【首席架构师圈】 微信圈子 志趣相投的同好交流。 点击加入微信圈子【首席架构师圈】 喜马拉雅 路上或者车上了解最新黑科技资讯,架构心得。 点击,收听【智能时刻,架构君和你聊黑科技】 知识星球 认识更多朋友,职场和技术闲聊。 点击加入知识星球【知识和技术】
你的服务器上装了多少内存? 在 Confluence 的 JVM 使用了多少服务器的内存?(例如在 JVM 中 -Xmx 和 -Xms 的设置) 在同样的服务器上,你还运行了一些其他的什么服务? 如果数据库服务器和 Confluence 服务器在不同的服务器上,那么网络配置是怎么样的? 有关数据库连接细节是什么?数据库的连接池有多大? 诊断 观察到的问题 那个页面存在载入缓慢? 如果是一个特定的 WIKI 页面,请将这个 WIKI 页面中的源代码也同时提交 这个页面总是载入缓慢还是偶尔载入缓慢? 这个将会给我们对你系统进行诊断所需要的足够信息,我们可以根据你提交的信息对你的系统性能进行诊断。当你创建完成问题后,请对你创建的问题进行跟踪。 https://www.cwiki.us/display/CONF6ZH/Requesting+Performance+Support
RequestTransferExit(0x37)—— 请求传输退出 这个服务是用来终止数据传输的(上传/下载)。 1.服务请求报文定义 图1 服务请求报文定义 Sub-Function: 本服务没有子服务。 服务请求报文中参数定义: transferRequestParameterRecord:用来传输的数据,格式和长度是由车厂自定义的。 3.支持的NRC 图3 0x37服务支持的NRC 4.示例 此示例分为3步: Step 1: 用户和ECU之间通过RequestDownload(0x34)服务来交换数据。 测试条件: (1)IG = ON (2)Engine = OFF (3)Vehicle Speed = 0 kph 报文示例: Step 1:请求RequestDownload(0x34)服务 发送请求
DiagnosticSessionControl(0x10)——诊断会话控制 这个服务的主要作用就是使能不同的诊断会话,不同的诊断会话包含了不同的诊断服务或者功能,这个服务就实现了不同诊断会话之间的切换 ECU上电之后会进入默认会话(default),当Client请求一个诊断会话服务,如果这个会话已经运行,则回复肯定响应。 进入其他session,default session的功能仍可用。 要想进入一个新的诊断会话,特定的条件需要满足,这些条件由用户定义。 下图是不同session所支持的服务一览: 图2 不同session所支持的服务 服务请求报文格式 图3 服务请求报文格式 图4 sub-function描述(1) 图5 sub-function 描述(2) 肯定响应报文格式 图6 肯定响应报文格式 数据参数格式定义如下(3~6字节): 图7 数据参数定义 图8 sessionParameterRecord定义 图9 sessionParameterRecord
SecurityAccess(0x27)—— 安全访问 这个服务的目的是为那些限制访问,以及和排放、安全相关的一些服务和数据提供一些访问权限来保护数据。 此服务执行步骤如下: (1)Client请求一个种子(Seed); (2)Server发送种子(Seed); (3)Client再根据相应算法算出一个匹配这个种子(Seed)的钥匙(Key)并发送给Server (1)肯定响应 图5 肯定响应报文格式 肯定响应参数定义: 图6 肯定响应参数 (2)否定响应 支持的NRC(Negative Response Code)如下图所示: 图7 支持的NRC
作者|许家滔 编辑|田光 微服务的理念与腾讯一直倡导的“大系统小做”有很多相通之处,本文将分享微信后台架构的服务发现、通信机制、集群管理等基础能力与其上层服务划分原则、代码管理规则等。 过去几年,微信都是很敏捷地在开发一些业务。所以我们的底层架构需要支撑业务的快速发展,会有一些特殊的需求。 另外,目前整个微信团队已经有一千多人了,开发人员也有好几百。 早年我们 QQ 邮箱、微信、图像压缩、反垃圾都是一个 web 服务,只有存储层会独立到后面去,甚至用 web 直连 MySQL。因为它早期比较小,后来变大之后就用微服务架构。 负载均衡这一块我们沿用 kb64 架构,6 台机为一组。因为园区故障少,平时单机时,分摊 25% 的流量,整体比较稳定。 2011 年起负责微信后台基础架构,包括分布式存储平台和后台服务框架等,覆盖微信账号 / 消息 / 朋友圈核心存储等,并为公众号 / 微信支付 / 微信企业号等等业务提供组件支持,近两年专注于后台服务质量提升和高性能架构
RoutineControl(0x31)—— 例程控制 这个服务是用来执行一系列操作序列的,是笔者见过的用途最广泛的一个服务,可以根据需求进行一些服务定制,例如擦除内存,一些自学习流程,故障自检测,配置某些数据参数等 例程控制可以用来进行以下操作: 开始一个例程 结束一个例程 查看例程执行结果 1.服务请求报文定义 图1 服务请求报文定义 Sub-function定义: 图2 0x31服务支持的子服务 2.肯定响应 图3 肯定响应报文定义 routineControlType:对应服务请求的子服务 routineIdentifier:例程ID routineInfo:这部分是自定义的,提供一种机制,使测试工具根据这个值来实施一些流程 发送请求:31 01 02 02 06 01 (最后两个字节为ControlOption) 肯定响应:71 01 02 02 32 33 8F(报文最后三个字节为汽车制造商自定义的状态) 以上就是0x31服务 ,与之类似的还有一个0x2F服务,只是对比31服务2F服务应用范围较窄,一般可以模拟一下车的灯光控制等,但是如果较复杂的流程的话还是用31服务多一些,感兴趣的读者可以自行了解一下。
RequestDownload(0x34)—— 下载请求 这个服务主要是用来给ECU下载数据的,最常见的应用就是在bootloader中,程序下载工具会发起下载请求,以完成ECU程序的升级。 1.服务请求报文定义 图1 服务请求报文定义 Sub-Function: 本服务没有子服务。 服务请求报文中参数定义: (1)dataFormatIdentifier 这个参数为1字节长度,高4位表示“compressionMethod”,低4位表示“encryptingMethod”(注:这里小编暂时不知道这两种 3.支持的NRC 图3 0x34服务支持的NRC 4.示例 由于0x34服务一般和0x36服务是配套使用的,在后续文章介绍0x36服务后,会一起进行示例展示。
TransferData (0x36)—— 数据传输 这个服务通常是用来下载/上传数据时用的,数据的传输方向由不同的服务控制:0x34服务表示下载,0x35服务表示上传。 0x36服务包含了一个blockSequenceCounter,在多个服务请求序列失败的时候以提高错误处理机制。 在接收到0x34/0x35服务以后,blockSequenceCounter会被初始化为1。 1.服务请求报文定义 图1 服务请求报文定义 Sub-Function: 本服务没有子服务。 服务请求报文中参数定义: (1)blockSequenceCounter 这个值在第一次初始化的时候为0x01,往后每增加一次0x36服务的请求这个值也跟着增加1,直到增加到0xFF,会重新再从0x00 3.支持的NRC 图3 0x36服务支持的NRC 4.示例 后续讲完0x37服务后展示。
1.请求报文定义 图1 服务请求报文定义 Sub-Function定义: 图2 支持的子服务 数据参数定义: 图3 数据参数定义 communicationType定义: 图4 可控制报文类型 图5 nodeIdentificationNumber定义 2.肯定响应 图6 肯定响应报文格式 图7 数据参数定义 3.支持的NRC 图8 服务支持的NRC 4.示例 (1)关闭网络管理帧 发送请求:28 01 02 肯定响应:68 01 (2)当地址为0x000A的节点接入网络时,将远程网络切换至仅诊断调度模式 发送请求:28 04 01 00 0A 肯定响应:68 04 0x28就是一个通信控制的服务 ,根据需求你想让什么类型的报文进行通信或者不让其进行通信,就可以用0x28服务来进行设置。 例如bootloader刷写之前或者某些例程控制的时候可能会要求停止网络诊断功能等,就可以利用0x28服务来进行控制。
,反观java 世界,学好 Spring MyBatis ,一路无忧,哎……微服务为了解决庞大的一整块后端服务带来的变更与扩展方面的限制,出现了微服务架构(Microservices):微服务是面向服务架构 微前端是一种类似于微服务的架构,它将微服务的理念应用于浏览器端,即将单页面前端应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。各个前端应用还可以独立开发、独立部署。 微前端微前端是一种类似于微服务的架构,是一种由独立交付的多个前端应用组成整体的架构风格,将前端应用分解成一些更小、更简单的能够独立开发、测试、部署的应用,而在用户看来仍然是内聚的单个产品。 微服务架构,可以解耦后端服务间依赖。而微前端,则关注于聚合前端应用。热闹驱动开发。新的技术,既然很热闹,那么就学吧。微前端的实现,意味着对前端应用的拆分。 《微前端学习笔记(1):微前端总体架构概述,从微服务发微》,请注明出处:https://www.zhoulujun.cn/html/webfront/engineer/Architecture/9029
基本性能问题诊断步骤 开始下面的程序: 进入 Troubleshooting Confluence hanging or crashing 页面找到已知的主要性能问题。 如果上面的步骤没有能够为你提供帮助,你也不知道从哪里开始,你可以创建一个 support ticket 然后从基本的信息开始: atlassian-confluence.log catalina.out 日志(或者你的应用服务器日志 如果可以的话,你可以继续对系统的性能进行一些更进一步的诊断。 https://www.cwiki.us/display/CONF6ZH/Requesting+Performance+Support
什么是 Arthas 摘录一段官方 Github 上的简介 Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。 Arthas 支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。 这里面主要是做了一些服务端启动的事情。 ? 这段代码中,主要通过反射的手段,调用了 ArthasBootstrap 类中的 bind 方法来启动 Arthas 服务端,接下来我们就一起来看下 Arthas 服务端启动的源码。 Arthas服务端启动 废话不多说,先上代码。 ? 这段代码主要是围绕 ShellServer 做一些配置,并调用 listen 方法启动监听 ?
文章目录 微服务架构简介 微前端架构简介 微前端与微服务的融合 1. 共享服务 2. 基于事件的通信 3. 统一的身份和认证 4. 交付管道的集成 示例:使用微服务和微前端的电子商务平台 微服务架构 微前端架构 融合微服务和微前端 结论 欢迎来到架构设计专栏~架构的未来:微前端与微服务的融合 ☆* o(≧▽≦)o *☆嗨~我是 ❤️ 在当今快速发展的软件开发领域,架构设计一直是一个不断演化的领域。随着技术的不断发展,我们看到了微服务架构和微前端架构这两种新兴的架构风格的崭露头角。 微前端与微服务的融合 虽然微服务和微前端是两种不同的架构风格,但它们之间存在许多共通之处。它们都强调了模块化、独立开发和部署的概念。 同样,微前端架构可以将前端模块拆分为多个独立的部分,这些部分可以在不同的前端应用程序之间共享。通过将微服务和微前端中的共享部分抽象为可重用的服务,可以实现更好的代码复用。 2.
微服务架构的特点是独立服务,这些服务专注于特定的业务功能,并由小型、自包含的团队维护。微服务架构经常用于在 AWS 上开发的 Web 应用程序,这是有充分理由的。 微前端架构将微服务开发原则引入前端应用程序。在微前端架构中,开发团队独立构建和部署“子”前端应用程序。这些应用程序由“父”前端应用程序组合而成,该前端应用程序充当容器来检索、显示和集成各种子应用程序。 带有微前端的微服务后端 微前端的好处 与单体前端相比,微前端具有以下优势: 独立工件:微服务开发的核心原则是工件可以独立部署,这对于微前端仍然适用。 在微前端架构中,团队应该能够独立部署他们的前端应用程序,而对其他服务的影响最小。这些更改将反映在父应用程序中。 自治团队:每个团队都是各自领域的专家。例如,计费服务团队成员具有专业知识。 结论 微前端架构为前端应用程序引入了微服务开发的许多熟悉的好处。微前端架构还允许您管理小型独立组件,从而简化构建复杂前端应用程序的过程。
TesterPresent(0x3E)—— 会话保持 这个服务的目的是确保诊断服务或者之前激活的通信还处在激活的状态,可以保持当前的非默认(Default Session)会话,通过周期地发送请求帧来阻止自动跳转回默认 1.服务请求报文定义 图1 服务请求报文定义 Sub-Function定义: 图2 支持的子服务 注意上图为Bit 6 ~ 0的定义,Bit 7(supportPosRspMsgIndicationBit 本服务不支持有数据参数的报文。 2.肯定响应 图3 肯定响应报文定义 3.支持的NRC 图4 服务支持的NRC 4.示例 在举例之前先来了解下supportPosRspMsgIndicationBit,在ISO14229-1 ,为了使这些服务在写DID的时候是在激活状态,就会使用0x3E使这些服务保持在激活状态,以完成写DID的操作。
今天谈下业务系统性能问题分析诊断和性能优化方面的内容。这篇文章重点还是谈已经上线的业务系统后续出现性能问题后的问题诊断和优化重点。 对于服务器的计算能力,一般来说厂家都会提供TPMC参数作为一个参考数据,但是我们实际看到相同TPMC能力下的X86服务器能力仍然低于小型机的能力。 第二个点也是我们经常谈的比较多的点,就是我们的业务系统在进行架构设计的时候,特别是面对非功能性需求,我们都会谈到系统本身的数据库,中间件都采用了集群技术,能够做到弹性水平扩展。 因此也是我们常说的要给点,即: 单点访问性能正常的时候可以扩展集群来应对大并发状态下的同时访问 单点访问本身性能就有问题的时候,要优先优化单节点访问性能 业务系统性能诊断的分类 对于业务系统性能诊断,如果从静态角度我们可以考虑从以下三个方面进行分类 比如我们提交一个表单很慢,通过APM分析我们很容易发现究竟是调用哪个业务服务慢,或者是处理哪个SQL语句慢。这样可以极大的提升我们性能问题分析诊断的效率。 END