首页 > 编程语言 >《Java架构师的第一性原理》65系统架构之架构设计方法论

《Java架构师的第一性原理》65系统架构之架构设计方法论

时间:2023-09-06 14:56:05浏览次数:39  
标签:具备 架构设计 服务 请求 redis 规范 65 Java 进行

 

4 规范

(Must have)
规范一:非数据服务做到无状态,避免同一集群内的节点间有功能差异;
做到实例可以被随时停止、重启、增加,并且完全不依赖于本地磁盘或者内存
规范二:服务具备优雅重启
规范三:服务提供的API建议采用http\grpc, json\pb规范,不建议其他自定义格式
规范四:线上服务最小集群单元2个实例,避免单点服务;如无法避免,则应该在设计阶段考虑到单点故障的的处理方案
规范五:服务的所有依赖库或者服务都要有明确的负责人;依赖需要有完备SLA
规范六:服务需要有明确能衡量容量的指标清单;在达到服务上限时具备自我保护能力(限流、降级)
规范七:每个服务都需要自证服务健康度(增加metrics接口);
能够输出每秒内完成的请求总量、正常请求总量、异常请求总量,或者是输出单次请求的信息后由监控系统进行统计;
以及耗时的平均值,最大值,最小值,分位值
规范八:业务服务每个请求默认实现一条业务日志;线上日志级别默认开启在Info级别(Fatal > Warning > Info > Debug)
规范九:每个服务具备排查问题,异常错误监控和报警能力;报警内容清晰明确
规范十:服务之间通过API进行交互,禁止通过数据存储层(redis\mysql)进行交互
规范十一:服务之间的访问禁止环路调用(A->B->C->A)
规范十二:服务需要具备故障隔离能力,依赖方异常需要有应对措施,具备自动熔断能力或通过配置中心实现的快速开关能力;
规范十三:redis作为缓存使用,每个key都要设置默认的过期时间;强烈不建议redis作为存储使用
规范十四:数据具备多副本的能力,建立数据备份机制,数据重要度分级、备份周期等信息
规范十五:避免对数据库锁表或者锁库的操作


(Nice to Have)
规范十六:所有请求的超时设置建议是99线的3倍
规范十七:服务的线程数建议是cpu核数的1.5倍
规范十八:服务发现通过名字服务进行发现,公司推荐使用Consul作为服务发现;
禁止将对方服务IP写在配置中进行访问,不建议通过(SLB、VTM)以及内网域名进行服务发现
规范十九:服务访问需要提供标识和token, 供服务提供方进行验证
规范二十:访问下游失败时进行有限的重试,快速failover
规范二十一:服务按照DDD模型进行设计和划分,尽量做到高内聚低耦合

标签:具备,架构设计,服务,请求,redis,规范,65,Java,进行
From: https://www.cnblogs.com/yeahwell/p/14650897.html

相关文章

  • 即时通讯技术文集(第19期):IM架构设计基础知识合集 [共13篇]
    为了更好地分类阅读52im.net总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第19 期。[-1-] 微信后台基于时间序的新一代海量数据存储架构的设计实践[链接] http://www.52im.net/thread-2970-1-1.html[摘要] 时隔3年,微信再次分享了基于时间序的新一代海量......
  • java~掩码的应用
    掩码是一串二进制代码对目标字段进行位与运算掩码掩码通常是一个用于屏蔽或隐藏某些位的值,以便在计算中只关注感兴趣的位。掩码通常是一个由二进制位组成的数,用于按位与操作,以清除或保留某些位的值。常见的用途包括:位操作和位掩码:在计算机编程中,位掩码用于执行位操作,如按位......
  • JavaScript Date UTC & GMT All In One
    JavaScriptDateUTC&GMTAllInOnejs时期时区转换UTC&GMTCoordinatedUniversalTime/协调世界时UTC是最主要的世界时间标准,其以原子时的秒长为基础,在时刻上尽量接近于格林威治标准时间。UTC实际上与GMT基本相同.https://zh.wikipedia.org/zh-hans/协调世......
  • 无涯教程-JavaScript - MONTH函数
    描述MONTH函数返回由序列号表示的日期的月份。月份以整数形式给出,范围从1(一月)到12(十二月)。语法MONTH(serial_number)争论Argument描述Required/OptionalSerial_number您要查找的月份的日期。应该使用DATE函数或其他公式或函数的输出输入日期。如果将日期作为......
  • 二级医院信息系统源码(HIS) Angular+Nginx+ Java
    基层医疗云HIS作为基于云计算的B/S构架的HIS系统,为基层医疗机构提供了标准化的、信息化的、可共享的医疗信息管理系统,可有效进行医疗数据共享与交换,解决数据重复采集及信息孤岛等问题,实现对基层医疗数据的分析和挖掘,为基层卫生机构提供科学合理的业务管理服务。可实现“云部署”,即......
  • 无涯教程-JavaScript - ISOWEEKNUM函数
    描述ISOWEEKNUM函数返回给定日期的年份的ISO周编号。语法ISOWEEKNUM(date)争论Argument描述Required/OptionalDateDateisthedate-timecodeusedbyExcelfordateandtimecalculation.RequiredNotesMicrosoftExcel将日期存储为连续数字,因此可以在计算......
  • java中如何用Scanner类读入单个字符
    Scanner没有直接读入单个字符的方法,next方法没办法读入空格符,因为Scanner以空格符作为输入完毕的标志importjava.util.Scanner;Scannerin=newScanner(System.in);Strings=in.nextLine();char[]chars=s.toArray();charc=chars[0];//c就是读入的单个字符......
  • java中String和数组的长度
    数组的长度是lengthString的长度是length()在Java中,数组是引用数据类型,不是类,因此也是读取固有的length属性得到数组长度,它没有length()方法。但是,java中的String类型是jdk中已经封装好的final类,类就有属性和方法,只是String没有length属性,只有length()方法。......
  • java中静态方法调用非静态成员变量、非静态方法
    publicclassCircle{privatedoubleradius=1.0;doublegetAre(){returnradius*radius*Math.PI;}publicstaticvoidmain(String[]args){CirclemyCircle=newCircle();System.out.println("radiusis"+myCircl......
  • 《Head First Java》学习笔记2--接口、构造函数与垃圾收集器
    接口:Java的接口就像是100%的纯抽象类接口的方法都带有public和abstract意义,这两个修饰符是属于选择性的完全不同的继承树的类可以实现相同的接口,使用接口就像是说“不管来自哪里,只要实现这个接口,别人就会知道你一定会履行这个合约”当用接口来作为多态......