




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微服务选型与探讨 1 2020 4 19 问题汇总 1 为什么微服务部署很少采用边缘方式CI 2 宏观角度下微服务架构所适用的场景及运维 3 金融行业的微服务的标准如何制定比较合理 core微服务需要用到哪些技术 core微服务有哪些成功的案例 6 微服务与系统模块化的取舍 2 2020 4 19 为什么选择微服务 3 2020 4 19 微服务架构与单体架构的对比 4 2020 4 19 康威定律 Organizationswhichdesignsystemsareconstrainedtoproducedesignswhicharecopiesofthecommunicationstructuresoftheseorganizations MelvinConway 1967 设计系统的组织 其产生的设计等同于组织之内 组织之间的沟通结构分布式服务组成的系统按照业务而不是技术来划分组织做有生命的产品而不是项目Smartendpoints和dumbpipes 强服务个体和弱通信 自动化运维 DevOps 容错快速演化 5 2020 4 19 AKF可扩展立方 ScalabilityCube X轴扩展 关注水平的数据和服务克隆 也就是前文提到的 加机器解决问题 Y轴扩展 关注应用中职责的划分 比如数据类型 交易执行类型的划分Z轴扩展 关注服务和数据的优先级划分 如分地域划分整个扩展模型 用下图来表示 其中原点代表完全无扩展的状态 6 2020 4 19 身份认证用户 客户端 资源交互过程中的身份认证授权框架服务注册服务提供方将自己调用地址注册到服务注册中心 让服务调用方能够方便地找到自己 服务发现服务调用方从服务注册中心找到自己需要调用的服务的地址 负载均衡服务提供方一般以多实例的形式提供服务 负载均衡功能能够让服务调用方连接到合适的服务节点 并且 节点选择的工作对服务调用方来说是透明的 服务网关服务网关是服务调用的唯一入口 可以在这个组件是实现用户鉴权 动态路由 灰度发布 A B测试 负载限流等功能 配置中心将本地化的配置信息 properties xml yaml等 注册到配置中心 实现程序包在开发 测试 生产环境的无差别性 方便程序包的迁移 API管理以方便的形式编写及更新API文档 并以方便的形式供调用者查看和测试 集成框架微服务组件都以职责单一的程序包对外提供服务 集成框架以配置的形式将所有微服务组件 特别是管理端组件 集成到统一的界面框架下 让用户能够在统一的界面中使用系统 分布式事务对于重要的业务 需要通过分布式事务技术 TCC 高可用消息服务 最大努力通知 保证数据的一致性 调用链记录完成一个业务逻辑时调用到的微服务 并将这种串行或并行的调用关系展示出来 在系统出错时 可以方便地找到出错点 支撑平台系统微服务化后 系统变得更加碎片化 系统的部署 运维 监控等都比单体架构更加复杂 那么 就需要将大部分的工作自动化 现在 可以通过Docker等工具来中和这些微服务架构带来的弊端 例如持续集成 蓝绿发布 健康检查 性能健康等等 严重点 以我们两年的实践经验 可以这么说 如果没有合适的支撑平台或工具 就不要使用微服务架构 常见的微服务组件及概念 7 2020 4 19 NET微服务和容器指南 eBookaka ms MicroservicesEbook Referenceapplicationaka ms MicroservicesArchitecture 覆盖下列主题 领域驱动设计模式领域模型 Aggregates Entity VO etc 简单的CQRSDapperMicroORMforqueriesCommandsandMediatorpatter领域事件 在同一个微服务内 微服务IntegrationEvents 跨多个微服务 Multi containerdocker compose ymlSwaggerw SwashbuckleSecurity Authentication Authorization withtokensfromIdentityServer4wrappingASP NETIdentity 微服务 9 2020 4 19 Newpatternsandnewtechnologies Microservices DockerContainers DockerImage DockerRegistry DockerHub AzureContainerRegistry BoundedContext APIGateway EventBus Commands Events DockerHost AzureContainerService AzureServiceFabric Kubernetes DockerSwarm MesosDC OS LinuxContainers WindowsContainers DomainEvents Mediator Aggregates DomainEntity CQRSsimplified Domain DrivenDesign MessageBrokers RabbitMQ AzureServiceBus NServiceBus MassTransit Hyper VContainers Amunication Brighter StatefulServices Actors Orchestrators Autonomous Decoupled Isolated ServiceDiscovery TransientFailuresHandling Resiliency HealthChecks RetrieswithExponentialBackoff CircuitBreakers Polly Nomad addressableservices Microservices Containers 但是他们天生一对 单体应用程序 微服务应用程序 微服务应用程序把功能分割为更小粒度的服务 通过独立部署各个服务的方式扩展 每个服务可以独立进行扩展 单体应用程序在一个进程中运行所有的功能 通过部署应用程序的多个实例进行扩展 App1 App2 eShopOnContainers参考应用程序 架构 Orderingmicroservice Catalogmicroservice eShopWebAppMVC ASP NETCoreMVC Identitymicroservice STS users eShopSPAWebapp TypeScript Angular4 eShopmobileapp Xamarin FormsC xPlat OS iOSAndroidWindows DockerHost eShoptraditionalWebapp HTML SQLServerdb Clientapps Basketmicroservice Rediscache Marketingmicroservice MongoDB CosmosDB SQLServerDB SQLServerdb SQLServerdb Locationmicroservice MongoDB CosmosDB Ordering API GracePeriodworkerSvc 微服务模式架构设计 14 2020 4 19 微服务关键模式 直接访问vs APIGateway服务健康检查弹性云应用程序 指数退避和Circuitbreaker进行重试异步 发布 订阅 EventBus 使用协调器进行扩展 HealthChecksAPI HealthChecksWatchDogapp health Microservice2 Microservice1 health HealthChecksAPI ConsumerA ConsumerB Router APIGateway ServiceRegistry query health health Microservice2 Microservice1 UsuallyProvidedbytheOrchestrator i e ServiceFabric Kubernetes etc Microservice2 Microservice1 ClientWebAppMVC Container Container WebAPI WebAPI ASP NETCoreMVCContainer Microservice3 Container WebAPI ClientSPAWebApp JavaScript Angular js ClientMobileApp APIGateway ASP NETCoreWebAPI Container Backend TraditionalWebApp Browser HTML HTML JSON JSON Buildingresilientcloudapplications HTTP Request Response HTTPRequest Response WithRetriesw exponentialbackoff Circuit Breakers Microservice2 Microservice1 ClientWebAppMVC WebAPI WebAPI ASP NETCoreMVCContainer Microservice3 WebAPI APIGateway ASP NETCoreWebAPI Backend RetrieswithExponentialBackoff HTTP Request Response HTTP Retry1 Retry2 Retry3Success Microservice2 Microservice1 ClientWebAppMVC WebAPI WebAPI ASP NETCoreMVCContainer Microservice3 WebAPI APIGateway ASP NETCoreWebAPI Backend RetrieswithExponentialBackoff HTTP Request Response HTTP Retry1 Retry2 Retry3 Retry4 OpenCircuit RespondwithException CircuitBreaker ComponentsforRetries Circuit Breaker etc NetflixHystrix MultipleHTTPrequests Browser SubmitOrderpage Backend Orchestrator WebApp MultipleCustomers Dependency1 Dependency2 Dependency3 Dependency7 Dependency8 Dependency4 Dependency5 局部的失效风险会被Microservices放大 HTTPrequest responsecommunication Dependency6 Anti patterns 如何最小化微服务所带来的指数故障 熔断器 例如Polly spolicies等等 避免在同一个Http调用链中请求长时间的请求 响应 微服务之间的Synchronousvs Asynccommunication Client i e MVCapp APIGateway etc Basket Ordering Catalog Other Client i e MVCapp APIGateway etc Httpsync request Httpsync response Basket Ordering Catalog Other Synchronousallreq resp cycle AsynchronousComm acrossinternalmicroservices EventBus i e AMPQ Asynchronous Comm acrossinternalmicroservices Polling Http Client i e MVCapp APIGateway etc Httpsync response Basket Ordering Catalog Other HttpPolling HttpPolling HttpPolling Httpsync request HttpPolling AsynchronousEvent DrivencommunicationwithanEventBus Database OrderingMicroservice BasketMicroservice DatabaseasCache Service Service User ProfileMicroservice WebAPIService Database Backend UserUpdatedevent PublishAction EventBus Publish SubscribeChannel UpdateUsercommand UserUpdatedevent Buyerinfo UserUpdatedevent Buyerinfo Eventualconsistencyacrossmicroservices databasedonevent drivenasynccommunication 1 3 2 4 DBupdate EventBusAbstractions Interface EventBusImplementations RabbitMQ AzureServiceBus Other NServiceBusMassTransitetc 业务部门调用链 26 平台体系 RestFulAPI 业务部门语言种类繁多微服务体系建设不完善 重复网络抖动 dns不稳定4 7层冗长调用链及资源消耗 4 7层调度 26 2020 4 19 身份认证架构的演变 开发过程中常见的交互浏览器与Web应用程序通信 B S浏览器与webAPI通信B S基于浏览器的应用程序与WebAPI通信 有时是独立的 有时代表用户 electronnode webkitH S桌面程序程序与WebAPI通信C S后台Service与webAPI通信S SWebAPI与WebAPI通信 有时是独立的 有时代表用户 S S 27 2020 4 19 Users用户使用注册的客户端访问资源的人 Clients客户端请求令牌的软件 用于验证用户 请求身份令牌 或访问资源 请求访问令牌 如 Web应用程序 本地移动或桌面应用程序 SPA 服务器进程等 Resources资源想要使用IdentityServer保护的资源 您的用户的身份数据或API 每个资源都有一个唯一的名称 客户端使用这个名称来指定他们想要访问的资源 IdentityData身份令牌用户的标识符 可以包含其他身份数据 AccessToken访问令牌访问API资源的令牌 包含有关客户端和用户的信息 如果存在 API使用该信息来授权访问其数据 28 2020 4 19 简化沟通方式API网关对所有微服务提供单一的访问点安全性对客户端隐藏了服务发现和服务版本阻止大规模攻击 包括SQL注入 XML解析漏洞和DoS攻击验证token certificates和其他credentials混合通讯协议API网关翻译并支持不同的通讯协议调用频率 跨域 缓存配置需要额外的配置需要管理路由的配置 API网关优 缺点 29 2020 4 19 API网关优 缺点 30 2020 4 19 ServiceFabric简介 集群 用于创建资源池托管和环境抽象 运行你自己的工作负载高可用 检测和处理故障编排 管理要求的状态配置管理后台 升级和健康监控编程模型 微服务应用平台可靠和低延迟 支持有状态的工作负载集成解决方案 所需工具都已经集成久经考验 已经使用大约10年 什么是ServiceFabric 自己创建一个PaaS 有点崩溃 滚动升级可用性保证可伸缩架构高密度资源治理打包和部署策略强制执行细粒度版本有状态工作负载主节点选择仲裁 MesosKubernetesZookeeperRedisRavenMongoDBYarnFleetHadoopContainers ServiceFabric为常见问题提供了集成解决方案 滚动升级可用性保证可伸缩架构高密度资源治理打包和部署策略强制执行细粒度版本有状态工作负载主节点选择仲裁 ServiceFabric Azure OtherClouds OnPremiseDatacenters LifecycleManagement Orchestration Autoscaling AlwaysOnAvailability Dev OpsTooling ProgrammingModels AzureServiceFabric 运行在任何地方 DevBox Health Monitoring Azure OtherClouds AzureServiceFabric 运行任何程序 GuestExecutables AnyCode ReliableServices Java C ReliableActors Java C WebApps Containers WindowsContainers Docker LifecycleManagement Autoscaling AlwaysOnAvailability Dev OpsTooling ProgrammingModels Health Monitoring DevBox Orchestration OnPremiseDatacenters Tars介绍 Tars是一个支持多语言 内嵌服务治理功能 与Devops能很好协同的微服务框架 开发框架的特点 01 开发框架 用户透明的实现 通过封装让通信 服务治理相关功能由框架完成 让开发者聚焦业务逻辑本身 A B C D 开发框架 基于TARS协议的RPC框架实现快速开发 部署变更 容器 DevOps structUserInfo 1requireintage 2requirecharsex 3optionalstringcompany 4optionalvectorhobby interfaceUser intgetUserInfo intuid outUserInfoinfo 客户端 Tars文件 接口代码自动生成 实现业务快速开发 classUserServant virtualint32getUserInfo int32uid UserInfo 版本兼容性好高性能多语言支持便利 服务端 classUserProxy intgetUserInfo intuid UserInfo 开发框架设计 高性能的实现 C 01 NodeJS 05 模型 NIO Reactor异步调用 协程 future promise JAVA 02 PHP 04 模型 Swoole异步调用 协程 模型 NIO Reactor异步调用 future promise 无锁化实现应用层获取时间 c扩展的序列化方式 全异步 GO 03 模型 协程池 chan异步调用 协程 类slab内存分配避免多协程竞争chan 优化Buffer队列减少内存拷贝 使用快速模式对象使用扁平化字符串 06 C 模型 NIO Reactor异步调用 await async 开发框架设计 性能数据 测试机型 CPU 4核 8线程3 30GHz内存 16G网卡 千兆 部署情况 性能数据 开发框架 扩展能力 Tars除了具备业界RPC框架常见的能力之外 还具备适应不同业务场景的扩展能力 协议的解析以插件化方式实现 支持http1 2 ssl pb 并支持用户自定义协议 多协议支持 1 提供RPC Call 注册自定义协议的方式 解决Tars服务访问边界系统的服务 2 框架提供TUP TarsUni Protocol 协议 解决边界系统的服务访问Tars服务的问题 与边界系统的对接 框架给业务开发开放了网络通信底层连接的上下文 并定制化push相关协议 可实现PUSH能力 消息Push 支持单向调用的能力 满足一些并不关注调用返回结果的场景 比如流量 延时 超时等统计信息的采集 单向调
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电网诈骗知识培训
- 2025年车库租赁合同解除程序总结
- 投影课件北师大版九年级数学上册
- 电缆故障知识培训总结课件
- 电缆安装基本知识培训
- 2025年私营企业劳动合同样本
- 电线老化消防知识培训课件
- 《第五章 一、长度和时间的测量》说课稿教学反思-2023-2024学年初中苏科版物理八年级上册
- 9.1青藏地区自然特征与农业 教学设计人教版地理八年级下册
- 歌曲《转圆圈》说课稿教案(2025-2026学年)
- 2025至2030全球及中国聚醚醚酮垫圈行业项目调研及市场前景预测评估报告
- 公共资源交易知识培训
- 2025年成人高考专升本政治试题及答案
- PEST分析课件教学课件
- 中小学学校手机管理实施细则(2025修订版)
- 印刷包装总结
- 二级医院卒中中心建设汇报
- 取卵术后膀胱损伤的护理
- 汽修安全环保培训内容课件
- 年产50万吨生化黄腐酸BFA系列产品项目可行性研究报告
- 国开2025年秋季《形势与政策》专题测验1-5答案
评论
0/150
提交评论