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

网站设计与网页制作网站关键词在哪

网站设计与网页制作,网站关键词在哪,公司网站维护经验总结,免费qq空间网站2020年突发的新冠疫情#xff0c;让在线协同办公在疫情期间成为了刚需。我们也从 2020 年的 2月3 日开始在家远程办公#xff0c;直到四月份。协同办公软件一下子火爆了起来#xff0c;钉钉、企业微信、特别是腾讯会议等都在疫情期间表现突出#xff0c;呈现出井喷式的发展… 2020年突发的新冠疫情让在线协同办公在疫情期间成为了刚需。我们也从 2020 年的 2月3 日开始在家远程办公直到四月份。协同办公软件一下子火爆了起来钉钉、企业微信、特别是腾讯会议等都在疫情期间表现突出呈现出井喷式的发展。目前大部分的企业信息化都是私有化部署局限于企业的内部网络无法实现远程协同办公所以越来越多的 To B 企业逐步转向 SaaSSoftware-as-a-Service软件即服务SaaS 最早是美国Salesforce公司1999年创立创造的新软件服务模式。这家公司的市值在 2019 年已经超过1000亿美元国内现在还处在发展中阶段前景还是十分广阔的。要将传统的私有化部署的软件重构成支持 SaaS 模式多租户是一个迈不过去的坎首先需要将系统改造成多租户模式然后再逐步实现计费、系统监控、用户行为分析等功能。我觉得多租户的设计应该分为三个层面来进行讨论应用、数据库和中间件。应用现在的项目或产品开发几乎都是前后端分离的开发模式应用层主要指的是 WebAPI WebAPI 的改造有两种方式1、每个租户部署一套 WebAPI、上层通过域名或 Url 地址的解析进行路由当有新租户注册的时候就动态进行对应的 WebAPI 的部署这种方式改造成本低但运维成本高不建议使用如果时间紧可以当过度阶段的临时方案。2、所有的租户共用一套 WebAPI 在 WebAPI 中需要获取到租户信息域名、Url参数、请求头信息、Cookie 等然后进行租户信息配置的切换。有新租户创建的时候无需进行新的 WebAPI 的创建只需要初始化租户基本信息即可。在这种方式下如果 Cluster1 的负载超过限度了也要能够进行动态切换将其中的某些租户切换到其他的 Cluester 中如上图。在 WebAPI 的代码实现上可以参考 Abp 框架中多租户的实现这里给出一个简化版本TenantConfiguration租户配置信息[Serializable] public class TenantConfiguration {public Guid Id { get; set; }public string Code { get; set; }public string Name { get; set; }public TenantStatus TenantStatus { get; set; }public string DBConfig { get; set; }public string CacheConfig { get; set; }public string MQConfig { get; set; }public string MongoConfig { get; set; }public TenantConfiguration(){TenantStatus  TenantStatus.Enable;}public TenantConfiguration(Guid id, string name): this(){Id  id;Name  name;} } TenantStore从缓存或数据库中获取租户配置信息public interface ITenantStore {TenantConfiguration Find(string code); } public class TenantStore : ITenantStore {public TenantConfiguration Find(string code){//从缓存或数据库进行租户配置信息获取throw new NotImplementedException();} } CurrentTenant当前租户类用来存储当前租户信息以及切换租户public interface ICurrentTenant {TenantConfiguration Config { get;}IDisposable Change(string code); } /// summary /// 当前租户 /// /summary public class CurrentTenant:ICurrentTenant {public ITenantStore _tenantStore;public CurrentTenant(ITenantStore tenantStore){_tenantStore  tenantStore;}public TenantConfiguration _config;public TenantConfiguration Config  _config;/// summary/// 切换租户/// /summary/// param namecode/param/// returns/returnspublic IDisposable Change(string code){TenantConfiguration tenantConfig _tenantStore.Find(code);if (tenantConfig  null){throw new Exception(Tenant not found);}if (tenantConfig.TenantStatus ! TenantStatus.Enable){throw new Exception(Tenant is disabled or deleted);}return new DisposeAction(() {_config  tenantConfig;});} } UrlTenantResolve根据 Url 参数进行租户解析public interface ITenantResolve {string Resolve(HttpContext httpContext); } /// summary ///  /// /summary public class UrlTenantResolve:ITenantResolve {public string Resolve(HttpContext httpContext){return httpContext.Request.QueryString.HasValue? httpContext.Request.Query[__tenant].ToString(): null;} } MultiTenancyMiddleware租户中间件关于在 dotNET Core 中自定义中间件可以参考《dotNET Core 3.X 请求处理管道和中间件的理解》public class MultiTenancyMiddleware: IMiddleware {protected readonly ITenantResolve _tenantResolve;private readonly ICurrentTenant _currentTenant;public MultiTenancyMiddleware(ITenantResolve tenantResolve,ICurrentTenant currentTenant){_tenantResolve  tenantResolve;_currentTenant  currentTenant;}public async Task InvokeAsync(HttpContext context, RequestDelegate next){var tenantCode  _tenantResolve.Resolve(context);if (tenantCode ! _currentTenant.Config.Code){using (_currentTenant.Change(tenantCode)){await next(context);}}else{await next(context);}await next(context);} } 数据库数据库在这里指的是关系型数据库用来存储业务数据实现多租户就要对数据进行隔离通常的数据隔离方式有三种模式1、完全隔离每个租户使用独立数据库2、部分共享租户共享一个数据库以 schema 或者 table 区分3、完全共享租户共享相同的数据库表以 tenant_id 进行区分推荐使用第一种或第二种隔离程度比较高也比较容易做横向扩展如果是第三种需要处理数据的隔离问题需要处理单表大数据的问题等对技术要求比较高。中间件除了数据库一个系统还需要依赖其他的一些中间件比如缓存、消息队列、文件存储缓存Redi消息队列RabbitMQ文件存储MongoDB 的 GridFSRedis1、Redis 中使用数据库的方式进行租户隔离2、Redis 可以通过修改配置文件的方式进行数据库的扩展默认为 16 个3、通过 Redis 分片集群的方式进行部署可以进行横向扩展3、在 Redis 集群中官方推荐节点数量不超过 1000 个这个对于多租户系统的前期来说应该是够用了如果到了租户数量的爆发期再进行架构的扩展比如不同的租户路由到不同的 Redis 集群中。RabbitMQ在 Rabbitmq 有 vhost 机制可以一个租户创建一个vhost通过 vhost 来进行租户的隔离目前还没查询到 vhost 是否有上限需要做进一步验证。MongoDBMongoDB 中主要使用 GridFS 来进行非结构化数据的存储通过创建数据库的方式来进行租户的隔离而且 MongoDB 支持分片的集群部署方式可以进行扩展横扩展在前期一个 MongoDB 集群应该就够用了。最后技术方案和架构没有最好的只有最适合的符合当下的业务场景、团队的技术能力就可以然后要做的就是做 MVP 最小可行性产品进而进行系统的改造。希望本文对您有所帮助
http://www.yutouwan.com/news/441962/

相关文章:

  • 自助建网站不需要域名wordpress 编辑器
  • 苏州做网站公司乛 苏州聚尚网络响应式布局方式
  • 网站备案号 有效期网站开发客户需求
  • 企业级网站开发与部署wordpress插件汉化教程
  • 怎样找素材做网站徐州网站制作报价
  • 河南网站建设公司店铺logo一键生成器
  • 郑州网站建设动态软件开发报价
  • 玉环 网站建设app下载安装官方网站
  • 一级a做爰片365网站泰安法拍房信息网
  • 企业大型网站开发需要多少钱平面电商设计是什么
  • 微信投票网站怎么做更换动易网站模板的方法
  • 企业网站的建设目标有哪几种顺德做网站的公司
  • 网站审批号建个人网站怎么赚钱吗
  • php网站开发预算文档电子专业毕设做网站
  • python做网站后台宣传型企业网站设计方案
  • app需要申请网站的子域名吗深圳做h5网站的公司
  • 企业网站属于下面哪种媒体类型学院网站建设情况
  • 做网站困难吗公司注册查询 核名
  • 网站优化种类免费网站建设 godaddy
  • 做软件贵还是做网站贵网站备案初审时间
  • 网站开发岗位名称厦门国外网站建设公司
  • 建立个人网站有什么好处wordpress 简书模板
  • 建设银行官方网站首页个人登录网站备案回访电话号码
  • 网站策划运营方案书福步外贸论坛怎么发帖
  • 软件开发工程师职业满足兴趣因素aso优化注意什么
  • 为什么需要建设网站帝国软件怎么做网站
  • 网站备案负责人照片wordpress本地网站打开慢
  • 安卓做视频网站大连网站建设免费
  • 网站建设后期费用动漫设计自考大专
  • 深圳品牌做网站公司打开现场直播