架构设计
星辉Johnson
这个作者很懒,什么都没留下…
展开
-
开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务
项目介绍:Hangfire:是一个开源的job调度系统,支持分布式JOB!!Hangfire.HttpJob是我针对Hangfire开发的一个组件,该组件和Hangfire本身是独立的。可以独立更新Hangfire版本不影响!该组件已被Hangfire官方采纳,在Hangfire官网可以查到:开源地址:https://github.com/yuzd/Hangfire...转载 2020-01-03 16:40:41 · 787 阅读 · 0 评论 -
Websocket原理通讲
看完让你彻底搞懂Websocket原理偶然在知乎上看到一篇回帖,瞬间觉得之前看的那么多资料都不及这一篇回帖让我对websocket的认识深刻有木有。所以转到我博客里,分享一下。比较喜欢看这种博客,读起来很轻松,不枯燥,没有布道师的阵仗,纯粹为分享。废话这么多了,最后再赞一个~一、websocket与httpWebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化...转载 2019-04-02 13:42:41 · 299 阅读 · 0 评论 -
Service Fabric 与Ocelot 的集成
概要云应用程序通常都需要使用前端网关,为用户、设备或其他应用程序提供同一个入口点。 在 Service Fabric 中,网关可以是任意无状态服务(如 ASP.NET Core 应用程序) 。本文介绍了如何将Ocelot用作 Service Fabric 应用程序的网关。Ocelot直接与 Service Fabric 集成,以便可以使用一组丰富的路由规则向后端 Service Fabri...转载 2018-12-14 14:07:21 · 637 阅读 · 0 评论 -
C#依赖注入
一、什么是依赖注入依赖注入的正式定义:依赖注入(Dependency Injection),是这样一个过程:由于某客户类只依赖于服务类的一个接口,而不依赖于具体服务类,所以客户类只定义一个注入点。在程序运行过程中,客户类不直接实例化具体服务类实例,而是客户类的运行上下文环境或专门组件负责实例化服务类,然后将其注入到客户类中,保证客户类的正常运行。二、依赖注入的类别1.Setter注...转载 2018-10-19 14:23:44 · 3759 阅读 · 1 评论 -
CQRS架构简介
看到博客园一位园友写了一篇文章,其中的观点是,要想高性能,需要尽量:避开网络开销(IO),避开海量数据,避开资源争夺。对于这3点,我觉得很有道理。所以也想谈一下,CQRS架构下是如何实现高性能的。关于CQRS(Command Query Responsibility Segration)架构,大家应该不会陌生了。简单的说,就是一个系统,从架构上把它拆分为两部分:命令处理(写请求)+查询处理(读请求...转载 2018-03-28 18:21:36 · 1014 阅读 · 0 评论 -
Quartz.NET实现作业调度
目录一、Quartz.NET介绍二、依赖框架2.1、使用Nuget添加引用2.1.0、创建一个项目2.1.1、安装Nuget2.1.2、修改Nuget镜像2.1.3、使用nuget安装Quartz.NET2.2、手动引用三、应用框架3.1、定义要执行的任务3.2、创建一个调度器3.3、创建一个任务对象3.4、创建一个触发器3.5、将任务与触发器添加到调度器中转载 2018-01-30 10:09:25 · 573 阅读 · 0 评论 -
分布式事务及分布式系统一致性解决方案
在分布式系统中,同时满足“一致性”、“可用性”和“分区容错性”三者是不可能的。分布式系统的事务一致性是一个技术难题,各种解决方案孰优孰劣? 在OLTP系统领域,我们在很多业务场景下都会面临事务一致性方面的需求,例如最经典的Bob给Smith转账的案例。传统的企业开发,系统往往是以单体应用形式存在的,也没有横跨多个数据库。 我们通常只需借助开发平台中特有数据访问技术和框架(例如Spring、转载 2017-10-23 18:49:16 · 613 阅读 · 0 评论 -
互联网分层架构的本质
本文为58同城架构师沈剑之作品。文字简洁,希望对大家有价值。上图是一个典型的互联网分层架构 :客户端层 :典型调用方是browser或者APP站点应用层 :实现核心业务逻辑,从下游获取数据,对上游返回html或者json数据-缓存层 :加速访问存储数据-数据库层 :固化数据存储 如果实施了服务化,这个分层架转载 2017-10-18 09:20:24 · 459 阅读 · 0 评论 -
巧用CAS解决数据并发一致性问题
缘起:在高并发的分布式环境下,对于数据的查询与修改容易引发一致性问题,本文将分享一种非常简单但有效的优化方法。一、业务场景业务场景为,购买商品的过程要对余额进行查询与修改,大致的业务流程如下:(1)从数据库查询用户现有余额 SELECT money FROM t_yue WHERE uid=$uid,不妨设查询出来的$old_money=100元原创 2017-09-20 14:06:07 · 370 阅读 · 0 评论 -
海量用户积分排名算法探讨
问题某海量用户网站,用户拥有积分,积分可能会在使用过程中随时更新。现在要为该网站设计一种算法,在每次用户登录时显示其当前积分排名。用户最大规模为2亿;积分为非负整数,且小于100万。PS: 据说这是迅雷的一道面试题,不过问题本身具有很强的真实性,所以本文打算按照真实场景来考虑,而不局限于面试题的理想环境。存储结构首先,我们用一张用户积分表user_score转载 2017-08-30 19:45:48 · 328 阅读 · 0 评论 -
从订单中心开始,聊聊「多KEY」类业务数据库水平切分架构实践
前言本篇讲义将以“订单中心”为例,介绍“多key”类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践。一、什么是“多key”类业务所谓的“多key”,是指一条元数据中,有多个属性上存在前台在线查询需求。订单中心业务分析订单中心是一个非常常见的“多key”业务,主要提供订单的查询与修改的服务,其核心元数据为:Order(oid, buyer_uid,转载 2017-09-06 16:13:56 · 971 阅读 · 1 评论 -
分布式id生成方案概述
序本文主要来聊聊分布式id的生成方案。目标业务系统需要什么样的ID生成器中提出了几点目标:唯一性时间相关粗略有序可反解可制造主要思路对于每个标识,都需要有一个命名空间(namespace),来保证其相对唯一性。分布式的ID生成,以Twitter Snowflake为代表的, Flake 系列算法采用的就是划分命名空间并行生成的思路。UUIDUUID(Univer转载 2017-09-05 20:03:34 · 614 阅读 · 0 评论 -
一张图说明CDN网络的原理
1.用户向浏览器输入www.web.com这个域名,浏览器第一次发现本地没有dns缓存,则向网站的DNS服务器请求;2.网站的DNS域名解析器设置了CNAME,指向了www.web.51cdn.com,请求指向了CDN网络中的智能DNS负载均衡系统;3.智能DNS负载均衡系统解析域名,把对用户响应速度最快的IP节点返回给用户;4.用户向该IP节点(CDN服务器)发出请求;转载 2017-07-24 11:01:51 · 372 阅读 · 0 评论 -
单KEY业务,数据库水平切分架构实践
本文将以“用户中心”为例,介绍“单KEY”类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践:如何来实施水平切分水平切分后常见的问题典型问题的优化思路及实践 一、用户中心用户中心是一个非常常见的业务,主要提供用户注册、登录、信息查询与修改的服务,其核心元数据为:User(uid, login_n转载 2017-07-20 17:23:49 · 372 阅读 · 0 评论 -
策略模式
接口 /// /// 飞行类接口 /// public interface FlyBehavior { void fly(); } /// /// 呱呱叫类接口 /// public interface QuackBehavior { void quack();原创 2016-09-26 20:22:11 · 381 阅读 · 0 评论 -
观察者模式
接观察者模式的经典案例就是订阅模式接口: public interface DisplayElement { void display(); } public interface Observer { void update(float temp,float humidity,float pressure); }原创 2016-09-26 20:42:35 · 663 阅读 · 0 评论