当前位置: 首页 > news >正文

淘宝网站推广方案网站建设网络公关

淘宝网站推广方案,网站建设网络公关,高端网站定制的方法,如何用用dw做网站后台源宝导读#xff1a;微服务架构与传统的单体式方案的最大不同是微服务将应用的核心功能拆分成多项服务。每项服务可以单独构建和部署。服务之间需要互相通信。假设服务间每次通信都需要在调用方编码操作#xff0c;那么必定会增加很大的工作量#xff0c;并且造成代码冗余并… 源宝导读微服务架构与传统的单体式方案的最大不同是微服务将应用的核心功能拆分成多项服务。每项服务可以单独构建和部署。服务之间需要互相通信。假设服务间每次通信都需要在调用方编码操作那么必定会增加很大的工作量并且造成代码冗余并且无法维护。一、背景集成平台在整体架构上抽象了连接中心核心服务来负责对外的服务通信。而在内部的服务通信中。接口中心事件中心服务流等都需要在接收到外部请求和指令后将对应的请求通过连接中心转发到第三方服务/厂商。那么在系统内部就存在连接中心会不断的被其他微服务调用。连接中心在被调用时目前需要经历如下几个步骤服务发现-负载均衡-APM-ZIP-身份认证处理-服务质量。如果这些步骤在此调用的时候都需要被重复编码那结果肯定是灾难性的。所以我们给我们的核心服务连接中心提供了专门的调用SDK。二、实现思路2.1 行业实现思想SDK定义指一些被软件工程师用于为特定的软件包、软件框架、硬件平台及操作系统等创建应用软件的开发工具之集合。在单体应用早期我们往往使用SDK封装一些对外公开的功能代码这样需要使用此功能就可以直接引用SDK而不需要从头开发。在SOA时代服务SDK的概念其实就已经出现在我们使用的技术中。比如WCF的客户端在某种程度上也是一种服务SDK使用客户端可以快捷的调用WCF服务端。而通信序列化编码等过程对我们来说是隐式的。我们不需要去关心这些特定的实现细节。现阶段在对于行业而言我们熟知的厂商提供了许多的软件服务。比如百度的地图服务讯飞的语音服务。从他们的技术文档可以得知基本上每个厂商在提供核心服务的同时。一定会给我们提供配套的服务SDK来简化我们调用服务的过程。在使用的过程中我们往往只需要使用SDK进行简单的配置。遵循这一思想在核心服务就绪后我们可以给核心服务配套对应的SDK来简化外部调用的过程。2.2 实现过程分析整体架构分析 :遵循行业服务端SDK设计思想我们需要给MIP核心服务连接中心设计配套的调用SDK。虽然连接中心不对外提供服务但是它在架构中需要对其他微服务提供服务。对应其他服务而言也需要简化对连接中心的调用。内部服务只需要引用连接中心SDK提供连接对应的Code(标识)和Path(调用路径)。就可以驱动连接中心访问第三方服务。SDK功能分析支持链式调用在调用链中现有业务需要支持链路追踪请求压缩服务发现负载均衡身份认证服务质量。连接数据缓存并实时更新最新连接数据。内部服务调用连接中心连接服务需要经历如图所示步骤缓存能力在SDK加载启动时SDK应具有实时更新连接数据的能力。设计思路通过上述分析得知SDK支持的功能实际上是一个链式调用的过程。链中的处理中间件是根据需求组装改变HttpRequest。通过分析有我们有三种链式调用实现方案。使用GOF设计模式中的责任链模式构建链式调用通道。模仿ASP.NET中间件模式构建链式调用通道。使用DelegatingHandler为HttpClient创建附加消息处理程序从而构建链式调用通道。缓存设计思路使用集成平台中比较成熟的Consul Blocking Query组件实时监控Consul中连接Flag的更改并实时获取最新的连接配置数据。三、实现方案经过对三种链式调用方案的对比我们决定使用HttpClient的HttpHandler构建连接中心SDK的链式通道那么为什么使用DelegatingHandler呢第一和第二种方案需要我们自己实现链式调用的头尾相连的过程。这个过程比较繁琐而且维护成本较高。而HttpClient天生就支持创建附加消息处理程序。这样HttpClient的调用链就是一个调用通道。我们可以根据需求在这个通道中插入自己的逻辑。关键实现代码定义通道中的SDK功能实现/// summary/// 连接中心SDK链路追踪实现/// /summarypublicclassTracingHandler : DelegatingHandler{//声明变量private readonly ConnectionProvider _provider;private readonly MipDeployConfigProvider _deployConfigProvider;protected static readonly DiagnosticListener _diagnosticListenerEvent new DiagnosticListener(MIPDiagnosticStrings.EventActionInvokeListenerName);protected static readonly DiagnosticListener _diagnosticListenerApigateway new DiagnosticListener(MIPDiagnosticStrings.ApiGatewayActionInvokeListenerName);protected static readonly DiagnosticListener _diagnosticListenerFlow new DiagnosticListener(MIPDiagnosticStrings.Flow_ApiConnectionListenerName);/// summary/// 构造函数/// /summary/// param nameprovider连接中心运行时提供者/param/// param namedeployConfigProvider部署信息提供者/parampublic TracingHandler(ConnectionProvider provider, MipDeployConfigProvider deployConfigProvider){_provider provider;_deployConfigProvider deployConfigProvider;}/// summary/// 将MIP连接中心请求相应链路追踪加入到HTTPClient扩展通道中/// /summary/// param namerequestMessage发送到连接API的Http请求/param/// param namecancellationToken令牌/param/// returns连接中心API请求结果/returnsprotected override async TaskHttpResponseMessage SendAsync(HttpRequestMessage requestMessage, CancellationToken cancellationToken){try{//省略代码ExecuteHttpAfter(requestMessage, response, carrier);return response;}else{return await base.SendAsync(requestMessage, cancellationToken);}}catch (Exception ex){ExecuteHttpError(requestMessage, ex);throw;}} }编排通道调用链public static class HttpHandleExtension{public static void AddHttpClinet(this IServiceCollection services){//编排HttpClient的调用通道链条services.TryAddTransientConnectivityTokenHandler();services.TryAddTransientAuthenticationHandler();services.TryAddTransientLoadBalancerHandler();services.TryAddTransientTracingHandler();services.TryAddTransientCompatibleGzipHandler();services.TryAddTransientPollyCircuitBreakingHandler();services.TryAddTransientWebRequestHandler();services.TryAddSingletonMipDeployConfigProvider();AddConnectivityApiClient(services);AddConnectionApiClient(services);AddFakeConnectionApiClient(services);}/// summary/// 配置HTTP行为/// /summary/// returns/returnsprivate static HttpMessageHandler CreateDefaultHttpClientHandler(){var handler new HttpClientHandler{AllowAutoRedirect false,AutomaticDecompression DecompressionMethods.None,UseCookies false,UseProxy false,ServerCertificateCustomValidationCallback Const.DangerousAcceptAnyServerCertificateValidator,};if (handler.MaxConnectionsPerServer Const.DefaultMaxConnectionsPerServer)handler.MaxConnectionsPerServer Const.DefaultMaxConnectionsPerServer;//return handler;return new WebRequestHandler {InnerHandler handler};}}至此集成平台中的其他内部服务只需要调用SDK的注册就可以通过连接Code/Path来调用连接中心中连接实例提供的Rest服务了。四、后续思考目前而言连接中心SDK并未公开任何扩展点。虽然我们构建了调用通道但是对通道的扩展能力并未对外公开。在后续的过程中。SDK可以根据需求变更进行如下两个优化。1、支持通道扩展能力。2、缓存目前只支持从Consul实时更新数据这也可以在后续过程中根据需求增加更多的基础设施。------ END ------作者简介刘同学 集成平台的开发工程师目前负责天际平台相关开发工作。也许您还想看技术分享Java SDK动态数据源和上下文机制技术分享NodeJS分布式链路追踪实现技术分享 | Java SDK 元数据驱动的事件通信架构技术分享Hangfire深度实践技术分享 | APT结合JavaPoet生成模板化Java源代码文件技术分享 | 玩转高效UI自动化测试更多明源云·天际开放平台场景案例与开发小知识可以关注明源云天际开发者社区公众号【建模】文档服务提供高保真打印模式明源云·天际硬核技术认可获华为鲲鹏技术认证书天际·开发者社区“重装发布”
http://wiki.neutronadmin.com/news/318800/

相关文章:

  • 做蛋糕视频的网站提高百度快速排名
  • 公司网站建设的建议wordpress 模板4列插件
  • 产品网站建设哪个好推广深圳
  • 网站app建设禁止搜索引擎抓取wordpress的目录
  • 班级网站建设维护英语培训机构网站建设策划书
  • 乌拉圭网站后缀类似一起做网店的网站
  • 如何做网站信息wordpress添加页脚QQ图标
  • 好推建站网站可视化编辑
  • 织梦英文网站模板工作室赚钱项目
  • 潍坊市安丘网站建设邢台企业网站建设
  • 网站摄影设计有没有不花钱建设网站的方法
  • tomcat网站开发宁波seo排名公司
  • 常用的网站开发技术有哪几种网页开发工具软件有哪些
  • 电子商务与网站建设实践论文建站是什么专业
  • 网站建设 部署与发布视频教程可以使用ftp的网站
  • 睢宁县凌城做网站的wordpress网页布局
  • 企业网站建设账务处理怎样给网站做外链
  • 网站如何换域名网站制作前景怎么样
  • 东莞玩具加工东莞网站建设广州市住房和建设水务局网站
  • 资源网站源码苏州网站建设要多少钱
  • 涂料网站设计公司网页制作模板在哪买
  • 点个赞科技 网站制作做淘宝客网站哪个好
  • 网站制作公司南宁做 淘宝客最大的网站是叫什么
  • 新站seo优化快速上排名凡科网邮箱登陆
  • 网站服务器配置参考指南多用户网站建设
  • 做手机网站做网站需求 后期方便优化
  • 网站后台拿shell安徽省建筑业信息一体化平台网
  • 做视频添加字幕的网站家居企业网站建设精英
  • 海西州电子商务网站建设公司学校网站的建设与使用情况
  • 免费自助设计网站discuz企业网站