Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved.|微服务技术交流ShifengDengPrincipleSalesConsultantOracleSouthChinaCopyright©2017Oracleand/oritsaffiliates.Allrightsreserved.|微服务应用vs.单体应用–单体应用OracleConfidential–Internal/Restricted/HighlyRestricted2UI产品服务产品订单服务订单库存服务库存用户服务用户……服务……DB浏览器一个特定的应用软件会包括有几百个功能项,所有功能项都打包进了一个单体的应用中。典型的例子有,ERP、CRM等其他各种各样的软件Monolithic传统核心应用使用广泛,优点是:单独应用是作为一个整体单元来设计、开发、部署,开发简单直接,集中式管理基本不会重复开发功能都在本地,没有分布式的管理开销和调用开销缺点也非常明显,特别对于互联网公司来说:开发效率低:所有的开发在一个项目改代码,递交代码相互等待,代码冲突不断代码维护难:代码功能耦合在一起,新人不知道何从下手部署不灵活:构建时间长,任何小修改必须重新构建整个项目,这个过程往往很长稳定性:一个微不足道的小问题,可以导致整个应用挂掉扩展:必须作为单个软件来扩展,当有资源需求冲突时扩展就变得非常困难,无法满足高并发情况下的业务需求阻碍创新:由于所有的功能都基于同一套技术框架来够构建,想加入新的技术或者框架就非常困难Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved.|微服务应用vs.单体应用–微服务应用OracleConfidential–Internal/Restricted/HighlyRestricted3去中心化的治理技术去中心化的管理数据基础设施自动化容错设计演进式设计拆分应用,实现敏捷开发和部署组件化到多服务围绕业务功能组织团队做产品而不是做项目智能端点与傻瓜管道微服务特性微服务的优点和缺点一样明显优点开发简单技术栈灵活服务独立无依赖独立按需扩展可用性高缺点(挑战)多服务运维难度系统部署依赖服务间通信成本数据一致性系统集成测试重复工作性能监控没有最好的,只有适合自己的对于大的互联网公司,微服务架构是血液,细节有不同,但是核心理念是通的。对于一般的公司,实践微服务有非常大的技术挑战。微服务比较适合未来有一定的扩展复杂度,且有很大用户增量预期的应用,必须考虑未来的巨量的用户,微服务架构成了最好的选择。UI浏览器产品服务产品DB订单服务订单DB库存服务库存DB用户服务用户DB……服务……DBCopyright©2017Oracleand/oritsaffiliates.Allrightsreserved.|微服务间通信OracleConfidential–Internal/Restricted/HighlyRestricted4UI浏览器产品服务产品DB订单服务订单DB库存服务库存DB用户服务用户DB……服务……DB同步调用REST(JAX-RS,SpringBoot)RPC(Thrift,Dubbo)gRPC异步消息调用Kafka,NotifyMetaQBrokerCopyright©2017Oracleand/oritsaffiliates.Allrightsreserved.|客户端的调用OracleConfidential–Internal/Restricted/HighlyRestricted5UI浏览器产品服务产品DB订单服务订单DB库存服务库存DB用户服务用户DB……服务……DBUIAPIGateway浏览器产品服务产品DB订单服务订单DB库存服务库存DB用户服务用户DB……服务……DB采用在服务和UI之间加入代理或者叫APIGateway,作用如下提供统一服务入口,让微服务对前台透明聚合后台的服务,节省流量,提升性能提供安全,过滤,流控等API管理功能Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved.|微服务痛点OracleConfidential–Internal/Restricted/HighlyRestricted6微服务标准微服务化没有统一标准,一般按业务领域垂直切分业务按一定的粒度划分职责,并形成清晰、职责单一的服务接口微服务通讯微服务之间的通信方案相对成熟,开源领域选择较多的有RPC或RESTfulAPI方案,比如:gRPC、ApacheThrift等。微服务治理,治理体现在以下诸多方面:服务注册与发现身份验证与授权服务的伸缩控制反向代理与负载均衡路由控制流量限制及切换日志管理性能度量、监控与调优分布式跟踪过载保护服务降级服务部署与版本升级策略支持错误处理熔断机制重试机制……Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved.|ServiceMeshOracleConfidential–Internal/Restricted/HighlyRestricted7ServiceMesh又译作“服务网格”,作为服务间通信的基础设施层。负责服务之间的网络调用、限流、熔断和监控。ServiceMesh有如下几个特点:应用程序间通讯的中间层轻量级网络代理应用程序无感知解耦应用程序的重试、超时、监控、追踪和服务发现ServiceMesh作为Sidebar运行,对应用程序来说是透明,所有应用程序间的流量都会通过它,所以对应用程序流量的控制都可以在ServiceMesh中实现Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved.|ServiceMesh带来微服务治理的变革OracleConfidential–Internal/Restricted/HighlyRestricted8传统微服务之间的微服务治理逻辑的位置微服务治理逻辑被独立出来之后的位置Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved.|IstioOracleConfidential–Internal/Restricted/HighlyRestricted9Istio是一个用来连接、管理和保护微服务的开放平台,具备负载均衡、服务间认证、监控等功能,在服务网络中统一提供了许多关键功能:流量管理:控制服务之间的流量和API调用的流向,使得调用更可靠,并使网络在恶劣情况下更加健壮可观察性:了解服务之间的依赖关系,以及它们之间流量的本质和流向,从而提供快速识别问题的能力策略执行:将组织策略应用于服务之间的互动,确保访问策略得以执行,资源在消费者之间良好分配。策略的更改是通过配置网格而不是修改应用程序代码服务身份和安全:为网格中的服务提供可验证身份,并提供保护服务流量的能力,使其可以在不同可信度的网络上流转Istio服务网格逻辑上分为数据面板和控制面板:数据面板由一组智能代理(Envoy)组成,代理部署为边车,调解和控制微服务之间所有的网络通信控制面板负责管理和配置代理来路由流量,以及在运行时执行策略Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved.|微服务的实现工具及手段OracleConfidential–Internal/Restricted/HighlyRestricted10一般微服务都离不开DevOps和Docker,理解微服务架构是核心devops和docker是工具,是手段MicroserviceDockerDevops在ServiceMesh层面,Oracle即将推出基于开源Istio的服务治理平台,在Contrainer层面已经提供了成熟ContrainerCloudService及ApplicationContrainerCloudService等产品供企业选择OracleContrainerCloudService可以用来轻松快速地创建企业级容器基础设施。它提供了全面的工具,支持在Oracle云基础设施中针对开发、开发/测试、开发运维和云原生用例,编写、部署、编排和管理基于Kubernetes容器管理工具、Docker容器的应用ApplicationContrainerCloudService提供了基于Kubernetes容器管理工具、Docker容器化的企业在现代化的多语言平台上,使用JavaSE、Node.js、PHP、Python、Ruby等开发符合12-factor(12要素)原则的云原生应用Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved.|Vision:AnEnd-to-EndContainerNativeSuiteOracleConfidential–Internal/Restricted/HighlyRestricted11Copyright©2017Oracleand/oritsaffiliates.Allrightsreserved.|OracleCloudNativeApplicationDevelopmentPlatformOracleConfidential–Internal/Restricted/HighlyRestricted12ContainerFunctionsOpensource,cloudneutral,communitydrivenfunctionsasaServiceforanylanguage,bestofclassforJavaContainerMicroservicesAcollectionofservices,frameworksandlibrariesforthemodernclouddeveloper;basedonCloudNativeComputeFoundation–Istio/EnvoyContainerPipelinesAmarketleadingsolutionforapplicationlifecyclemanagementwithaDockercentricproductviewContainerEngineFullymanagedcontainerservicebasedonKubernetesrunningonOracleCloudInfrastructureBareMetalContainerDiagnosticsUnparalleledreal-timeobservabilityanddiagnosticsforlargescaledistributedJavasystemsfnBuild---Deploy---OperateSuiteofContainerNativeCapabilitiesCopyright©2017Oracleand/oritsaffiliates.Allrightsreserved.|ContainerPipelines-ContinuousIntegrationandDeliveryofContainersOracleConfidential–Internal/Restricted/HighlyRestricted13CI/CDAutomationBuildMicroservicesAndFunctionsDeployandManageKubernetes&RegistriesManage,Operate,DiagnoseAnIntegratedSetofCapabilitiesSupportingt