spring-cloud微服务系统架构

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

校本研修系统架构--微服务架构乊springcloud一、系统总体设计二、为什么要微服务逻辑复杂隔离性差、可用性差模块耦合严重代码臃肿高内聚,复杂性低易亍拆分和管理独立部署和伸缩性强迭代周期短单应用缺点服务化优点三、服务化带来的问题分布式事务处理通信问题BUG定位困难部署复杂服务管理四、如何实施微服务轻量化通信机制服务组件化做产品的态度去中心化处理基础设施自劢化业务拆分服务调用追踪容错设计演进式设计五、服务化治理框架1、Dubbo(使用RPC通讯协议,序列化方式支持RMI、Hessian2、dubbo2、json)2、SpringCloud(RESTAPI)六、RPCVSREST1、RPC--远程过程调用,目前框架有thrift、gRPC、RMI、Hessian、Protobuf2、SpringCloud(RESTAPI)两者比较:1.从使用方面看,Http接口只关注服务提供方,对于客户端怎么调用,调用方式怎样并不关心,而RPC服务则需要客户端接口与服务端保持一致2.从性能角度看,由于Http携带的信息过多,导致传输速度比RPC低七、为什么选择Springcloud1、Dubbo只是实现了服务治理,其它组件如配置管理和服务跟踪等组件需要依赖其它框架,使用门槛较高2、SpringCloud,是一个解决微服务架构实施的综合性解决框架,整合了诸多被广泛实践和证明过的框架,包括了服务治理的方方面面,如服务追踪、断路器、回退机制、消息总线、服务调用等组件。使用门槛较低八、Springcloud技术体系SpringBoot传统spring框架Springboot1、配置web.xml,加载spring和springMVC1、大量自劢化的配置,简化了原有spring的配置2、配置数据库连接,配置spring事务2、类似模块化的starterpoms的定义,简化maven配置3、配置加载配置文件的读取,开启注解3、根据不同环境加载配置文件4、部署tomcat4、自嵌tomcat、Jetty容器,可以融入DOCKER服务化治理SpringCloudEureka注册中心服务治理机制EurekaServer配置•声明一个EurekaServer注册中心EurekaServer配置•配置EurekaServerEurekaServer配置•如何接入EurekaServer方式一EurekaServer配置•如何接入EurekaServer方式二服务化治理SpringCloudRibbon客户端负载均衡什么是客户端负载均衡•springcloud中的ribbon,客户端会有一个服务器地址列表,在发送请求前通过负载均衡算法选择一个服务器,然后进行访问,这是客户端负载均衡;即在客户端就进行负载均衡算法分配。服务化治理SpringCloudHystrix服务容错机制服务雪崩效应•服务雪崩效应是一种因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程.服务雪崩效应的原因•硬件故障•程序Bug•缓存击穿•用户大量请求•同步等待造成的资源耗尽(线程资源耗尽,服务调用者提供的服务也将不可用)服务雪崩效应应对措施•流量控制(网关限流、关闭重试)•改进缓存模式(同步改为异步刷新)•服务自动扩容•服务调用者降级服务(资源隔离、不可用服务调用快速失败)•同步等待造成的资源耗尽(线程资源耗尽,服务调用者提供的服务也将不可用)Hystrix预防雪崩措施•资源隔离•熔断器•命令模式线程池隔离信号量隔离线程与调用线程非相同线程与调用线程相同开销排队、调度、上下文开销无线程切换,开销第异步支持不支持并发支持(最大线程池大小)支持(最大信号量)Hystrix熔断器使用Hystrix熔断器使用Hystrix熔断器使用HystrixDashboard服务化治理SpringCloudFeign声明式服务调用SpringCloudFeign•只需创建一接口,并用注解的方式配置它,即可完成对服务提供的接口绑定•整合了SpringcloudRibbon与SpringcloudHystrixSpringCloudFeign使用SpringCloudFeign使用服务化治理SpringCloudZuulAPI网关SpringCloudZuul•SpringCloudZuul路由是微服务架构的不可或缺的一部分,提供动态路由,监控,弹性,安全等的边缘服务。•目前ecloud-gateway网关服务已支持路由、白名单、安全和缓存等服务校本于网关架构图Zuul安全机制•签名机制,为防止接口数据篡改和重复调用,增加接口参数校验机制,sig签名算法为MD5(appKey+appSecret+timestamp),appKey是分配给客户端的ID,appSecret是分配给客户端的密钥,timestamp为unix时间戳,请求的URL有效时间为15分钟•Token机制,用户在登录之后会返回一个access_token,客户端在访问需要登录之后才能访问的资源,需要在在Authorization头部使用Bearer模式新增token,如head(“Authorization”,”Bearertoken”)ZuulFilter类型•PRE•Route•Post•ErrorPRERoutePostZuulservlet执行过滤类型顺序Zuul缓存实现Zuul缓存实现Zuul缓存实现服务化治理SpringCloudSecurityAuth认证服务OAUTH2.0协议•OAuth2是一个授权框架,或称授权标准,它可以使第三方应用程序或客户端获得对HTTP服务上(例如Google,GitHub)用户帐户信息的有限访问权限。OAuth2通过将用户身份验证委派给托管用户帐户的服务以及授权客户端访问用户帐户进行工作。综上,OAuth2可以为Web应用和桌面应用以及移动应用提供授权流程。OAUTH2.0协议用户认证用户授权OAUTH2.0角色•资源所有者(ResourceOwner)用户•资源服务器(ResourceServer)ecloud-oauth-server•授权服务器(AuthorizationServer)ecloud-oauth-server•客户端(Client)第三方应用OAUTH2.0使用场景•授权码模式(authorizationcode)•简化模式(implicit)•密码模式(resourceownerpasswordcredentials)•客户端模式(clientcredentials)OAUTH2.0授权码模式携带token请求资源curl-i=c80408d4-5afb-4f87-9538-9fb45b149941携带code获取tokencurl-i–dgrant_type=authorization_code&code=p1ancF&client_id=demoApp&client_secret=demoAppSecret“-XPOST请求授权=code&client_id=demoApp&redirect_uri=(Jsonwebtoken)•JWT(jsonwebtoken)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源•基于session的登录认证,在传统的用户登录认证中,因为http是无状态的,所以都是采用session方式。用户登录成功,服务端会保证一个session,当然会给客户端一个sessionId,客户端会把sessionId保存在cookie中,每次请求都会携带这个sessionIdJWT编码格式•yJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiend6IiwiYWdlIjoiMTgifQ.UQmqAUhUrpDVV2ST7mZKyLTomVfg7sYkEjmdDI5XF8QSignature=HMACSHA256((base64(header)+'.'+base64(payload)),’secret’);持续集成与灰度发布•整合JENKINS•整合DOCKER

1 / 50
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功