2025微服务架构设计与实施指南_第1页
2025微服务架构设计与实施指南_第2页
2025微服务架构设计与实施指南_第3页
2025微服务架构设计与实施指南_第4页
2025微服务架构设计与实施指南_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目一、编写概 二、微服务设计原则和架 微服务逻辑架构 微服务治理框架架构 三、微服务体系设计规 网关环境管 网关服务管 网关服务发 网关服务路 网关服务治 网关认证鉴 服务注册发 服务路由管 服务负载均 服务请求限 服务请求容 服务熔断隔 服务流量调 服务认证鉴 服务日志采 服务基础监 服务调用链分 服务性能分 服务日志采 代码检出编 流水线管 容器镜像构 服务持续部 配置模板管 灰度发 四、微服务工程设计规 五、微服务开发设计规 简化部署、可组合等优点。一个微服务既可以是服务提供SpringSpringSpringBoot是一种用于简化Spring应用的初始搭建以及SpringSpringSpringCloud是一系列框架的集合,利用SpringBoot开都可以用SpringBoot的开发风格做到一键启动和部署。QPS,请求时间和🎧错 Accesskey/SecretkeyAPICircuit个微服务,如果链路中一个或多个服务问延迟过高,会导致入口服务的请求不断堆积,持续消耗更多的线程、o资源,最终由于资源累积使系统🎧现瓶颈,造成更多服务不当某个目标服务响应缓慢或者有大量超时情况发生时,熔断该服务的调用,对于后续调用请求,不再继续调用目标FaultLoad当应用访问一个具有多个实例的微服务时,会涉及到路由SpinCloud提供基于ibbon可以通过配置文件配置负载均衡策略,支持随机,轮询、会话保持和基于响应时间的权值等多种负载均衡路由策RateServiceMaven是Apache下的一个纯Java开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中MavenJava项目进行构建、持续集成(CI-Continuousintegration)是指多名开发者在开持续部署(CD-continuousdeployment)是基于某种工具或持续交付(ContinuousDelivery图1说明APIAPI(内网用户或其它系图2说明SpringCloudAPI网关、注APIAPI网关管理、配置中心、在线监控等功能,是一站式的微服务管理、配置及DevOpsCICD过程,包括编译、微服务框架、治理平台、DevOps将微服务开发和治理的复杂性以平台微服务架构(MSA)是一种服务化架构风格和设计模式,提倡将应用按照开发兼运维(s)文化的流行促进小团队独立运作和交付能力。RESTAPI。微SOAServiceorientedArchitecture)微服务可以通过不同的编程语言与工具进行开发,图3HTTP协议。其他特殊需求的将根据业务具体情况单独设计。服务的独立性(跨语言、平台性服务方和请求方的技术实现应遵循所选通信协议的标准(HTTP协议件服务、licence授权服务、工作流服务等等。API能够使用户在线查看微服务接口契约,方便调用者查看和测试APISwaggerAPIAPI【必备】支持从注册中心(Eureka、Nacos、Consul等)自动同步服务的注【推荐】应该支持透传功能,APIPath位置的请求参数外,不对其他【推荐】应该支持按照不同维度,例如网关/服务/API等配置线程隔离、服APIIPAK/SK【推荐】应该支持网关、服务、APIrestful【必备】支持动态续租,10(正则表达式规则,脚本化规则路由)QPS在微服务间的调用会带来一些无法预知的问题,如网络故障/依赖服务崩溃failover、failfast、failbackCookieHTTPHeaderQueryTLS通信及数字证书认证。token,session,cookiesAPICPU、内存、网络、磁盘等基础指标,能准确反关系、请求状态及状态码、成功/错误率、路径、时耗;TraceID、所在服务、所在节点、业务请求、调用数量、ID和调用的发生时间查询快照;URL、HTTP方法、异常、错误日志、SQL语句等;及响应时间最慢的数据库、RedisMemcached;【必备】支持节点(进程)(进程JVMCPUheapAPI基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发K8SK8S集群,YAML信息;OpenShiftSDNCalico;Ingress【参考】应该支持网络策略设置(OpenshiftSDN)K8SK8S中最小的计算硬件单元。它是集群中单个机器的表示。在大多git、svn工具可配置。mavensettings文件;Pipelinewebhook方式、定时触发、PollSCM镜像是容器的基石,容器是镜像的运行实例,dockerfiledockerfiledockerlogin的sshMaven工程,每个微服务使用独立MavenProject工程进行开Maven工程中;互,必须采用REST的接口进行数据交互;GatewayAPIMavenGroupId,ArtifactId,Version内容,【必备】GroupId:【必备】ArtifactId:项目工程的唯一的标识符,即项目工程名称,必须为全(systemname-microsevicename)的格式,例如:cns-user,cns-auth;【必备】Version:目前采用三级版本结构,即主版本次版本修订号1.主版本号:API修改4.开发阶段使用三位版本号-SNAPSHOT(SNAPSHOT全大写)布使用三位版本号。例如:1.3.1,1.3.1-SNAPSHOT。BOM【推荐】使用SpringBootMaven插件,打包成一个Fatjar,使之可以独立jar。【必备】用于微服应用命名规则:应用系统简称-(systemname-microsevicename),全小写,例如::mon_utils工程,其它微服务通过依赖的方式进行引用。此类功能包只应该common_utils,其它微服务通过依赖的方【必备】application.yml用于定义微服务本身属性,且可跨越多个环境使用的配置信息应放置在application.yml中;置在bootstrap.yml文件中;【推荐】生产环境配置加密:对于生产环境的敏感信息(动态配置信息),推荐采用jasypt进行配置的加密,不可将明文密码暴露。【推荐】对于可预知的异常信息,应将异常信息编码,描述(国际化信息)等定义在配置文件中,在程序启动时加载至内存中使用。(对于异常码的设计【推荐】I18Nresource/i18n【必备】微服务工程必须在测试环境集成Swagger2工具,并遵循API设postman进【推荐】单元测试:所有涉及核心业务流程的函数或类必须使用Junit框架进行单元测试,测试代码单独存放,存放路径src/test/java;RobotFramework进行自动化接口测试及自动化UI测试;PerformanceCenter/Loadrunner、Jmeter【推荐】单服务最大负载测试:针对某个重要服务,必须进行最大负载测试,使用Jmeter工具;ZipkinAPM工具,用于发现调用链的性能瓶颈;【推荐】性能测试监控:性能测试时必须开启必要的监控。查看CPU、内存及网络情况,查看JVM的内存、CPU等情况。【必备】:applicationName:微服务应用注册到注册中ServiceIDServiceID对其SringBoot进行说明的。Mavenmicroservice-core使用//xxx方式。DemoXXX@author独孤求败createDate:2017728publicclassResourceController{{}ID@paramidID@paramid用户@return@linkDemoResponseBeandata@link publicDemoResponseBean<User>getUser(@PathVariable(value="id")longJAVA中有三种一般类型的可抛类:检查性异常(checkedexceptions)性异常(uncheckedExceptions)和错误(errors)。xceptionCheckedexception声明了一些预期可能发生的异常;【必备】UncheckedexceptionsRuntimeExOutOfMemoryError,StackOverflowError;thrownewthrownewDaoObjectNotFoundException("Couldn'tfinddaowithid"+catch(NoSuchMethodExceptioncatch(NoSuchMethodExceptione)thrownewDaoObjectNotFoundException("Couldn'tfinddaowithid"+id,catchtrytry}catch(AnyExceptionexception)//DopublicpublicvoidfoothrowsExceptionpublicvoidfoothrowsSQLExceptioncatchcatchExceptione)Throwabletry{//Dothe}catch(BankAccountNotFoundExceptionexception){thrownewBusinessException();//thrownewBusinessException("Someinformation:"+try{//Dothe}catch(BankAccountNotFoundExceptionexception){thrownewBusinessException(exception);//thrownewBusinessException("Someinformation:"catchcatch(NoSuchMethodExceptione)LOGGER.error("Someinformation",e);throwe;finallytrytry //Throws}finally someMethod和cleanUp都抛出异常,那么程序只会把第二个异常抛出catchcatch(NoSuchMethodExceptione)Feign客户端应定义在公共包中,供其它微服务使用;对于业务功能微服务暴露出来的Feign客户端,应在调用端微服务中定义;【推荐】Ribbon负载均衡策略:SpringRestTemplateSrpingCloudNetflixFeignRibbon(客户端负载均衡)Ribbon默认的使用简单轮询的策略。项目组,应该根据具体的业务场景使用合适的负载均衡策略(Ribbon默认支持7种策略,可以从并发数量,访问时间等角度进行选择);ribbon:eager-load:enabled:trueclients:user,ribbon:eager-load:enabled:trueclients:user,SLF4Jlog4j、logback等日志组件的API。使用门面模式的日志框架,有利于维护和各个类的【必备】不允许记录日志后又抛出异常,因为这样会多次记录日志,只允许记录一次日志。如果使用配置文件管理日志记录时(logback-spring.xml),loggeradditivityfalse;if(logger.isDebugEnabled()){logger.debug("Processingtradewithid:if(logger.isDebugEnabled()){logger.debug("Processingtradewithid:{}",id);【必备】不允许出现【必备】不允许出现【必备】记录日志时,对于参数的输入,应使用占位符的方式,如((“Proc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论