去中心化概念模型与架构设计
    
            
摘要:去中心化概念模型与架构设计 今天打算写写关于 IM 去中心化涉及的架构模型变化和设计思路,去中心化的概念就是说用户的访问不是集中在一个数据中心,这里的去中心是针对数据中心而言的。 站在这个角度而言,实际上并非所有的业务都能做去中心化设计,对于一致性要求越高的业务去中心化越难做。比如电商领域的库存就是
        
阅读全文
摘要:分布式追踪系统dapper 分布式调用跟踪系统的设计和应用 >>为什么需要分布式调用跟踪系统 随着分布式服务架构的流行,特别是微服务等设计理念在系统中的应用,业务的调用链越来越复杂, 可以看到,随着服务的拆分,系统的模块变得越来越多,不同的模块可能由不同的团队维护, 一个请求可能会涉及到几十个服务的
        
阅读全文
摘要:平台化项目多语言架构实现 项目为什么要平台化 一、易维护 封装可以大大的减少耦合,当发生变更的时候只需要修改一处地方。平台化项目和封装是有区别的,平台化项目是将项目所有组件、事件等制定一个标准,将这些组件基于标准进行高度封装,实现配置界面,通过配置大大的减少编码量。 当需要整体变更的时候只需要更改这
        
阅读全文
摘要:web性能优化 简介 性能优化的第一准则:加缓存。几乎绝大部分优化都围绕这个来进行的。让用户最快的看到结果。 性能优化的第二准则:最小原则。绝不提供多余的信息。比如,静态资源(图片、css、js)压缩,图片的滚动加载,异步请求,http请求合并等。 性能优化的第三准则:分布、集群。当前,这个的前提是
        
阅读全文
摘要:.NET设计规范————类型设计规范 .NET设计规范————类型设计规范 类型设计规范 从CLR的角度看,只有值类型和引用类型两种类型,但是从框架设计的角度我们把类型从逻辑上分了更多的组。如下所示: 类是引用类型的一般情况,占了框架中的大多情况,类的流行归于它支持面向对象的特征,以及它的普遍的适用
        
阅读全文
摘要:丁码农 专注大规模互联网架构... 丁码农 专注大规模互联网架构... 丁码农 专注大规模互联网架构... 分布式系统事务 本文首发于InfoQ,版权所有,请勿转载!!! http://www.infoq.com/cn/articles/solution-of-distributed-system-
        
阅读全文
摘要:双缓冲队列来减少锁的竞争 在日常的开发中,日志的记录是必不可少的。但是我们也清楚对同一个文本进行写日志只能单线程的去写,那么我们也经常会使用简单lock锁来保证只有一个线程来写入日志信息。但是在多线程的去写日志信息的时候,由于记录日志信息是需要进行I/O交互的,导致我们占用锁的时间会加长,从而导致大
        
阅读全文
摘要:EventStore的设计思路 最近打算用C#实现一个基于文件的EventStore。 什么是EventStore 关于什么是EventStore,如果还不清楚的朋友可以去了解下CQRS/Event Sourcing这种架构,我博客中也有大量介绍。EventStore是在Event Sourcing
        
阅读全文
摘要:数据分片 在分布式存储系统中,数据需要分散存储在多台设备上,数据分片(Sharding)就是用来确定数据在多台存储设备上分布的技术。数据分片要达到三个目的: 分布均匀,即每台设备上的数据量要尽可能相近; 负载均衡,即每台设备上的请求量要尽可能相近; 扩缩容时产生的数据迁移尽可能少。 数据分片方法 数
        
阅读全文
摘要:服务层的设计 服务层代码 首先我先放出2个主要类的代码再分别讲解 接口 + View Code + View Code + View Code + View Code 实现 + View Code + View Code + View Code + View Code 查询实体 上一节提到Speci
        
阅读全文
摘要:什么是架构 本文为《架构漫谈》系列第一篇。本文将会从:”什么是架构”,“架构能解决什么问题”,“架构和框架的区别”三个点来着重讨论,本文系个人观点,如有不正确的地方,欢迎指正讨论。 什么是架构? 每当我们开发新的项目的时候都会新建一个解决方案,然后在解决方案中搭建N个项目。每个项目之间通过“引用”达
        
阅读全文
摘要:CRUD全栈式编程架构之数据层的设计 CodeFirst 一直以来我们写应用的时候首先都是创建数据库 终于在orm支持codefirst之后,我们可以先建模。 通过模型去创建数据库,并且基于codefirst可以实现方便的 实现数据库迁移的工作.使用codefirst有以下几个技巧, 以Entity
        
阅读全文
摘要:CQRS架构设计及其实现 一、为什么要实践领域驱动? 近一年时间我一直在思考一个问题:“如何设计一个松耦合、高伸缩性、易于维护的架构?”。之所以有这样的想法是因为我接触的不少项目都是以数据库脚本来实现业务逻辑。在项目初期使用这样的方式野蛮开发似乎显得很高效,但是大家其实都清楚,正是这样的项目让大家拖
        
阅读全文
摘要:Netty开发实现高性能的RPC服务器 RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络,从远程计算机程序上请求服务,而不必了解底层网络技术的协议。说的再直白一点,就是客户端在不必知道调用细节的前提之下,调用远程计算机上运行的某个对象,使用起来
        
阅读全文
摘要:设计开篇 1 设计模式 类是我们面向对象编程的承载工具,可以说是面向对象的起点。 设计模式,这种算面向对象的进化。按照gof设计模式的分类 设计模式分为:创建型,结构型,行为型。 其中创建型主要和类的创建有关 结构性组织扩展类和类之间的关系 行为型主要扩展的类的访问 这三个对应到类上 创建型模式对应
        
阅读全文
摘要:怎样让Web项目暴露在外的服务坚不可摧? 阅读目录 1. 具体业务流程 2. 访问服务安全性保障初实践 3. 访问服务即时性保障初实践 Web 项目一般给特定人群使用,有些是局域网用户量不足1K的内部系统,也有些广域网用户上万的中型项目,当然还有用户上亿的大型项目。 这些大大小小的 Web 项目都会
        
阅读全文
摘要:Goodle Clean设计架构 实体基类UseCase的设计用了泛型和接口,仅仅设计了两个字段mRequestValues和mUseCaseCallback。其中,mRequestValues代表数据请求参数,用泛型进行了封装,它其实也是一个类的对象;mUseCaseCallback代表请求结果,
        
阅读全文
摘要:服务注册与发现 1.什么是服务注册与发现 微服务将传统的"巨石"应用拆分成一个一个的组件应用,每个组件应用提供特定的服务,可以是一个,也可以是多个,并且组件所含服务应该是可以动态扩展的,随着时间推移、系统进化,可任意拆分、合并。 组件化应用和颗粒化的服务,遍布在系统的各个角落,由不同的项目成员进行维
        
阅读全文
摘要:谈谈命名 Martin Fowler曾经在一篇文章中曾经引用过Phil Karlton的话: There are only two hard things in Computer Science: cache invalidation and naming things. 他说这句话在很长的一段时间
        
阅读全文