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

临沂罗庄建设局网站wordpress文章推荐系统

临沂罗庄建设局网站,wordpress文章推荐系统,网站开发常用软件是什么,织梦模板首页修改教程来源于公众号孤独烟 #xff0c;作者孤独烟引言OK#xff0c;如下图所示那显而易见#xff0c;做服务隔离的目的就是避免服务之间相互影响。毕竟谁也不能说自己的微服务百分百可用#xff0c;如果不做隔离#xff0c;一旦一个服务出现了问题#xff0c;整个系统的稳定性都…来源于公众号孤独烟 作者孤独烟引言OK如下图所示那显而易见做服务隔离的目的就是避免服务之间相互影响。毕竟谁也不能说自己的微服务百分百可用如果不做隔离一旦一个服务出现了问题整个系统的稳定性都会受到影响因此做服务隔离是很有必要的。那么怎么隔离呢按种类隔离按用户隔离OK接下来开始细说这两种方式正文种类隔离其实按照服务种类隔离要从两个纬度来说:即服务提供方和服务调用方假设我们一个系统有三个服务:订单服务库存服务支付服务有如下调用关系:OK,我们先明确一点上面有几个服务扮演服务提供方的角色一共是三个:支付服务(给用户提供服务)、库存服务(给支付服务提供服务)、订单服务(给支付服务提供服务)有几个服务扮演服务调用方的角色一共是一个:支付服务(调用订单服务和库存服务)针对服务提供方这个角度而言怎么做隔离呢很简单每一个服务乃至其对应的数据库给一个服务器部署就行这样某个服务出现了故障就不会相互影响达到一种物理层面上的隔离什么你们公司服务器不够了解一下《微服务为什么一定要用docker》针对服务调用方这个角度而言怎么做隔离呢OK先明白一点服务调用方不做隔离会出现什么情况如图所示一个请求过来占用支付服务中的Tomcat的一个线程。然后该线程去顺序调用订单服务和库存服务!那么一旦库存服务出问题了这个Tomcat的线程就一直卡在那无法返回!与此同时页面上源源不断的有请求过来会把Tomcat里头的线程池资源全部消耗完毕对于后面的请求Tomcat就无法响应因此如果不针对被调服务做服务隔离一个被调服务出问题就将导致调用方服务不可用那怎么隔离呢这里介绍一种线程池隔离方式给每个微服务都初始化出一个线程池如下图所示给订单服务和库存服务都初始化出一个线程池不使用Tomcat线程池中的线程直接调用而是用相应线程池中的线程去调用OK如果此时库存服务不可用了呢库存服务线程池会被迅速塞满此时后面进来的新请求发现库存服务线程池满啦于是乎就不去调库存服务直接返回如下图所示ps:目前业内有信号量隔离和线程池隔离两种隔离方式这里举的是线程池隔离怎么实现呢可以了解一下Hytrix、Sentinel、以及Resilience4j如何和你的项目结合起来使用Resilience4j只提供信号量隔离!用户隔离OK,我们先明白一点这里的租户和用户不是一个概念!用户: 一个环境/系统的一个使用者即该环境/系统的一个用户。租户:用户从某种粒度上被分到若干组内每组成为一个租户。这里的组可以这么理解:用户根据一定的特征去做分组比如是VIP的一组不是VIP的一组。又或者北方的用户一组南方的用户一组。按照自己的业务场景来分组。那么所谓的用户隔离就是按照不同的分组形成不同的服务实例。这样某个服务实例挂了只影响对应分组的用户而不是全部用户有如下三种方式方式一:每个租户有独立的服务和独立的数据库方式二:每个租户有共享的服务和独立的数据库方式三:每个租户有共享的服务和共享的数据库下面开始逐个说明方式一每个租户有独立的服务和独立的数据库这个在生产上一般是这么做如下所示如图所示用户在请求的时候会经过网关网关根据tenant_id识别出对应的服务实例进行转发。至于用什么当网关我们用的是Zuul。方式二每个租户有共享的服务和独立的数据库!这个在生产上一般是这么做如下所示如图所示用户在请求的时候会经过网关网关将数据转发给用户服务用户服务根据tenant_id确定该操作哪一个数据库OK这个时候大家应该有一个疑问在项目代码中怎么确定该操作的数据库好这个就是ORM框架动态选择数据源的问题我以国内流行的hibernate和mybatis来进行说明(1)hibernate方式在4.0版本hibenate开始支持多租户架构,即对不同租户使用独立数据库大家可以搜索一个配置叫hibernate.multiTenancy。该值有一个value值为DATABASE一个租户一个database。 将这项的value值设为DATABASE后还需要给hibernate.tenant_identifier_resolver配置项赋值即告诉hibernate如何解析出tenant_id。以及给hibernate.multi_tenant_connection_provider配置项赋值即告诉hibernate如何以租户特有的方式获取数据连接ps:看不懂的童鞋略过懂hibernate的童鞋自然懂这个配置!(2)mybatis方式mybatis没提供这种多租户架构的支持我们必须要扩展AbstractRoutingDataSource抽象类,实现多数据源切换嫌麻烦OK介绍你一个插件叫mybatis plus可以实现这种动态数据源切换API地址都给你贴出来了:mp.baomidou.com/guide/dynamic-datasource.htmlps:我只能给你点一下思路自己去查。因为具体如何配置都可以写一篇文章我很不爱写这种贴配置的文章觉得含金量不高所以大家根据我的思路去实现即可方式三每个租户有共享的服务和共享的数据库!这个在生产上一般是这么做如下所示如图所示用户在请求的时候会经过网关网关将数据转发给用户服务用户服务根据tenant_id确定操作数据库中的哪一行记录老规矩和你们说一下在ORM中难点在哪以mybatis为例所有的sql上都要加一句AND t.tenant_id  ?是不是觉得很麻烦怎么解决呢(1)hibernate方式利用hibernate filter配置, OR-Mapping配置文件使用Filter可以在进行数据查询时自动过滤数据如下所示    //省略    ps:看不懂的童鞋略过懂hibernate的童鞋自然懂这个配置!(2)mybatis方式mybatis中有一个东西叫做自定义Interceptor可以拦截出你要执行的sql然后动态拼上你的租户条件即可!嫌麻烦OK介绍你一个插件叫mybatis plus可以实现这种多租户的更改可以动态的解析出sql增加上条件API地址都给你贴出来了:mp.baomidou.com/guide/tenant.html总结本文介绍了服务隔离的分类以及在生产上具体是怎么做的希望大家有所收获!
http://www.zqtcl.cn/news/575419/

相关文章:

  • 无锡网站推广优化公司单位网站建设必要性
  • 网站建设丶金手指花总12网站建设是怎么挣钱
  • 网站开发都是用什么框架广西建设网人员查询网
  • 做购物网站怎么写开题报告中山如何建网站
  • 专门做游戏交易的网站新网站如何才做被百度收录
  • 网站模板打包自己做电视视频网站吗
  • seo网站关键词排名提升公司建设网站需要多少钱
  • 湖北网站设计流程旺旺食品有限公司网页设计
  • 无锡专业网站建设华企网站建设推广优化
  • 做网站公司流程cms203片
  • wordpress网站主机名如何优化培训体系
  • 安平网站建设团购网站建设目的
  • 长春网页网站制作做网站时搜索的代码是什么
  • 排名好的移动网站建设陕西恒业建设集团网站
  • 怎么用ps做简单网站个人商城网站建设
  • mvc做门户网站自适应网站制作费用
  • 建设工程协会网站查询系统成品网站源码在线观看
  • 宝塔做两个网站安卓版wordpress
  • 即墨网站建设招聘企业类网站有哪些
  • 汕头网站建设开发软件开发属于哪个专业
  • 企业网站建设规划书阿里云虚拟机怎么做多个网站
  • 营销平台网站建设做视频怎么做
  • 吉林房地产网站开发icp网站授权函
  • 深圳公司网站建设哪家好郑州短视频培训机构
  • 网络培训班答案百度seo收录软件
  • 中核工建设集团有限公司网站网站建设管理中se是什么意思
  • 网站如何做关键词引流网站怎么快速做收录
  • 网站建设文案网站设计要学哪些
  • 品牌网站建设gs平台搭建工具
  • 怎么把自己做的网站弄到域名上柳州游戏网站建设