• 微服务架构三大难点之一:数据同步查询

    微服务的架构虽然看起来很美,但是里面有一些是需要hold住的内容,其中一项是数据同步查询。当我们把系统拆分成多个业务域后,涉及到跨域的查询就捉襟见肘了,这个时候需要另外的指导思路(CQRS)架构解决这个问题。上图查询的数据通过数据同步+搜索引擎进行解决,通过canal订阅mysql的binlog的变化,同步到elasticsearch。这个方案的优点是不会跟业务进行耦合,不需要...

    微服务 2021年03月23日 75 0
  • 替代Spring Boot几种微服务框架比较

    目前,有很多使用Java和Kotlin创建微服务的框架。本文中考虑了以下内容:NameVersionYear of a first releaseDeveloperGitHubHelidon SE1.4.12019OraclelinkKtor1.3.02018JetBrainslinkMicronaut1.2.92018Object ComputinglinkQuarkus1....

    微服务 2021年03月17日 84 0
  • 从单体到微服务,这些年架构的演变

    背景这两年业界最流行的技术架构话题已经从前后端分离,变成了分布式、微服务、DDD了。微服务架构适合所有的公司吗,业务场景演变到了什么地步才需要考虑上微服务呢?毕竟选择技术架构之前应该考虑业务是否与之匹配,否则分布式、微服务这类繁重的架构设计对一些公司来说就变成了屠龙之技,反而成为一线开发团队的负担。在我不长的职业生涯中,经历过小型创业公司、国企般的大型项目以及在ThoughtW...

    微服务 2021年03月05日 71 0
  • 搞微服务用阿里开源的 Nacos 真香啊

    项目源码地址:https://github.com/alibaba/nacos一、项目介绍在选择使用一个工具之前,我们先大概了解一下它的同类型产品,这样更能看出它的价值。提供了一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。主要特性:服务发现:支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独...

    微服务 2021年02月24日 92 0
  • 如何打造一个轻量级的社交系统

    简介随着国外Facebook、Twitter、国内的微博等社交网络网站的崛起,很多公司也推出了类似的社交服务产品,相比与微博这种大型用户社交产品而言,很多公司都推出的类微博Feed流的社交产品,但由于一些公司的用户基数、用户活跃度等原因远没有微博庞大,因此这些产品在数据存储、Feed展示上的技术实现远没有微博的复杂,面对用户量级在1000万左右且旧社交系统中单表已有存量数据为2...

    架构设计 2021年02月09日 114 0
  • IM 消息数据存储结构设计

    1.背景在移动互联网高速发展的时代,生活中 IM 类产品已经是我们离不开的应用了,像微信、钉钉等都是以 IM 为核心功能的社交产品。另外也有一些应用不是以 IM 为核心,但是也是其重要功能,比如在线游戏、电商直播等应用。在 IM 庞大的体系中,消息系统无疑是最核心的,而消息系统中,最关键的部分是消息的分发和存储。在以往传统消息系统中,对于在线的用户,消息会直接实时发送到在线的接...

    架构设计 2021年02月06日 112 0
  • 分布式系统中的限流器实现

    限流器相关算法一般限流器有五种算法,分别是:令牌桶,漏斗桶,固定窗口,滑动日志(指的其实是广义上的滑动窗口),滑动窗口( 这里指的是滑动日志+固定窗口结合的一种算法 )。1. 令牌桶(Token bucket)令牌桶算法用来控制一段时间内发送到网络上的数据的数目,并允许突发数据的发送。算法大概是:假设允许的请求速率为 r 次每秒,那么每过 1/r 秒就会向桶里面添加一个令牌。桶...

    微服务 2021年02月02日 134 0
  • 微服务失败的 11 个原因

    微服务是当前流行的架构。简单地说,微服务就是一种面向服务的软件架构,在这种架构中,服务器端应用程序是通过组合许多单用途、小容量的网络服务来构建的。微服务架构让边界设计良好的服务的失效互不影响成为可能。但是,微服务和所有的分布式系统一样,也会存各种各样的问题。Shekhar Gulati 给我们分享了微服务失败的 11 个原因,这些原因还算比较常见,我们相信,他总结的心得对于想要...

    微服务 2021年01月31日 151 0
  • 用户画像方法论

    Part 1 什么是用户画像 Part 2 为什么需要用户画像Part 3 如何构建用户画像Part 4 用户画像的应用Part 5 总结参考资料:1. 百分点《用户画像的构建与应用》2. 腾讯-刘黎春《大数据时代下的用户洞察》3. 一号店-王富平《 用户画像系统实践》4. 京东-郭理靖《数据引导生产》5. 腾讯-刘立明《如何通过数据驱动业务发展》6. 知乎-Mr.墨叽《如何做...

    架构设计 2021年01月30日 145 0
  • 快速实现细粒度的身份权限管理

    授权的含义在通用领域内,授权是领导者通过为员工和下属提供更多的自主权,以达到组织目标的过程。在计算机领域内,授权是由信息系统指定批准机构授予某实体处理、存储或传送信息的权力。而在身份认证领域内,授权是指当客户端经过身份认证后,能够有限的访问服务端资源的一种机制。为什么要进行「授权」?在已经构建起的用户系统中,当你的 API 需要判断当前访问用户是否能访问当前资源时,就需要你构建...

    架构设计 2021年01月30日 149 0
  • 交易系统架构演进之路:服务治理

    前言微服务架构下,会引入很多服务问题,所以少不了需要做服务治理,包括:服务注册与发现、服务配置、服务限流、服务熔断、服务降级、负载均衡、链路追踪等。关于服务治理的范畴应该包括哪些,业界其实也没有形成标准,但至少包括了前面列出来的内容,这是毋庸置疑的。另外,微服务架构下,服务集群规模会越来越大,服务治理也很难靠人工完成,因此,微服务治理的自动化程序要高。下面,我们就根据上面列举的...

    架构设计 2021年01月29日 157 0
  • 分布式系统架构

    分布式理论知识1、分布式系统架构1.1基础概念分布式 : 将一个单体项目分成很多个模块,各个模块协同工作,各个模块构成了分布式系统集群:针对单个模块或者单个系统在多台服务器上部署,称为集群。为了提高系统的可用性,增加系统的负载。1.2分布式系统演变1.3分布式系统面临的问题问题描述通信异常网络本身的不可靠性,因此每次网络通信都会伴随着网络不可用的风险(光纤、路由、DNS等硬件设...

    架构设计 2021年01月28日 464 0
  • Github Actions还是Jenkins?该怎么选?

    在过去的几年中,DevOps已成为软件生命周期中至关重要的一部分,这推动了许多领先的DevOps工具和实践的发展。您可以找到一系列支持CI/CD流程的工具,Jenkins和GitHub Actions杰出地站在其中。在本文中,我将对GitHub Actions和Jenkins进行比较,并为你提供洞察力以做出正确的选择。Jenkins和GitHub Action简介Jenkins...

    架构设计 2021年01月27日 143 0
  • 智慧政务解决方案

    架构设计 2021年01月26日 142 0
  • 架构解密从分布式到微服务:分布式系统的设计理念

    分布式系统的经典理论分布式系统从诞生到现在已经有几十个年头了,其中伴随着一些很重要的基础理论,正是这些影响深远的基础理论,奠定了分布式系统的坚实基础,造就了分布式领域的一座座宏伟大厦。为了练就一身武功,让我们从这些经典的分布式理论开始学起吧。从分布式系统的设计理念说起分布式系统的首要目标是提升系统的整体性能和吞吐量。如果最终设计出来的分布式系统占用了10台机器才勉强达到单机系统...

    微服务 2021年01月23日 190 0
  • DevOps知识框架体系和最佳实践案例整理

    注:该文为我对网上发布的DevOps知识库Ledge的一个阅读笔记整理。Ledge(源自 know-ledge,意指承载物)知识平台是基于我们所进行的一系列 DevOps 实践、敏捷实践、精益实践提炼出来的知识体系。DevOps知识框架概述对于DevOps研发运维一体化,我在前面也写过了不少文章,包括了基础知识,敏捷研发,持续集成和交付,流水线设计,DevOps和容器云的集成,...

    架构设计 2021年01月23日 220 0
  • 高并发架构-分库分表

    为什么要分库分表(高并发系统的时候,数据库层该如何设计)?分库分表提高高并发有哪些分库分表中间件?如cobar、TTDL、Atlas、Sharding-jdbc 是client层方案,不需要单独部署,项目依赖jar包;mycat 是proxy层方案,需要部署,对各个项目透明;如何进行垂直拆分或水平拆分?水平拆分就是把一个表的数据给弄到多个库的多个表里去,每个表的结构都一样,但是...

    架构设计 2021年01月15日 205 0
  • 架构解密从分布式到微服务:深入理解网络,NIO

    NIO我们知道,分布式系统的基础是网络。因此,网络编程是分布式软件工程师和架构师的必备技能之一,而且随着当前大数据和实时计算技术的兴起,高性能RPC架构与网络编程技术再次成为焦点。不管是RPC领域的ZeroC Ice、Thrift,还是经典分布式框架Actor模型中的Akka,或者实时流领域的Storm、Spark、 Flink, 又或者开源分布式数据库中的Mycat、Volt...

    微服务 2021年01月13日 181 0
  • 互联网系统架构为什么要做前后端分离呢?

    在现在的互联网架构中,前后端分离已经是一个非常常见的系统架构方式了,但是我们将前后端分离以后,感觉项目的架构比传统的分层架构更复杂了,需要的人力资源也更多了,甚至项目周期也变得更长了,既然看上去好处不大,为什么还要做前后端分离呢?上面这个疑问可能是很多创业中的互联网企业疑惑的问题,而我们首先要明白,前后端分离并不是一个互联网系统必须的架构模式,任何的架构都是为业务服务的,如果...

    架构设计 2021年01月09日 186 0
  • 微服务架构下分布式事务解决方案

    1 微服务的发展微服务倡导将复杂的单体应用拆分为若干个功能简单、松耦合的服务,这样可以降低开发难度、增强扩展性、便于敏捷开发。当前被越来越多的开发者推崇,很多互联网行业巨头、开源社区等都开始了微服务的讨论和实践。Hailo有160个不同服务构成,NetFlix有大约600个服务。国内方面,阿里巴巴、京东、58同城等很多互联网公司都进行了微服务化实践。当前微服务的开发框架也非常多...

    微服务 2021年01月08日 274 0
  • 程序员架构修炼:架构设计概要,业务、应用、技术、数据架构

    架构设计在架构设计过程中,我们会根据需要做出不同的架构设计,而在设计时需要涉及一定的架构设计核心要素。架构设计概要架构设计是从业务需求到系统实现的一个转换,是对需求进一步深入分析的过程,用于确定系统中实体与实体的关系,以及实体的形式与功能。架构可根据从业务需求到系统实现的不同需要分为:业务架构、应用架构、数据架构、技术架构。下面以电商系统为例进行架构设计。业务架构业务架构是对业...

    架构设计 2021年01月07日 481 0
  • API快速开发平台设计思考

    在我谈API网关的时候曾经谈到过快速开发平台,即将API快速开发的一些内容放入到API网关中,实际来看围绕API全生命周期管理,本身包括了开发态,运行态,运维态。对于API网关更多的是解决运行态的问题,API网关本身应该轻量化设计,不做太多的协议转换,适配,数据映射等工作,这些工作应该放到API开发平台来完成。API开发平台最终就是开发完成并暴露一个标准的Http API接口,...

    架构设计 2021年01月06日 216 0
  • “12306”的架构到底有多牛逼?

    每到节假日期间,一二线城市返乡、外出游玩的人们几乎都面临着一个问题:抢火车票!虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家都深有体会。尤其是春节期间,大家不仅使用12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。“12306服务”承受着这个世界上任何秒杀系统都无法超越的QPS,上百万的并发再正常不过了!笔者专门研究了一下“12...

    架构设计 2021年01月01日 260 0
  • 大数据脱敏方案调研

    大数据发展速度飞快,大数据的价值也有目共睹,在大数据技术领域,对于分析性能,实时性等方面都有了很大的突破,但数据安全问题在数据业务建立初期很难被重视,而数据规模壮大后才开始重视,以致大多数企业大数据平台安全管控能力普遍缺失。。现今数据安全问题频发,而且一旦发生就会对公司造成很严重的利益甚至声誉损害。数据安全引发的问题代价极高,后果严重,而我们又不能保证服务器永远不会被攻击,所以...

    架构设计 2020年12月30日 340 0
  • 微服务架构实战:使用Jenkins实现自动化构建

    使用Jenkins实现自动化构建一个大型平台的微服务架构设计通常会产生很多项目工程,因此会有很多服务和应用需要部署,并且需要不断地迭代和更新,这是一个庞大的工程,所以我们需要借助自动化工具,实现各个微服务工程的CICD工作流程。CICD是持续集成(Continuous Integration)和持续部署(Continuous Deployment)的总称,是指通过自动化的构建、...

    微服务 2020年12月26日 209 0
  • 从根上理解高性能、高并发:深入计算机底层,理解线程与线程池

    前言作为即时通讯技术的开发者来说,高性能、高并发相关的技术概念早就了然于胸,什么线程池、零拷贝、多路复用、事件驱动、epoll等等名词信手拈来,又或许你对具有这些技术特征的技术框架比如:Java的Netty、Php的workman、Go的nget等熟练掌握。但真正到了面试或者技术实践过程中遇到无法释怀的疑惑时,方知自已所掌握的不过是皮毛。本篇概述本篇主要是从CPU这一层来讲解多...

    架构设计 2020年12月24日 211 0
  • 微服务架构设计实践总结和思考

    今天继续谈下在微服务架构设计中的一些实践和思考。对于SOA和微服务,我前面很多文章都进行了详细的阐述,今天这篇文章重点还是放在一些架构设计和实践的一些关键点思考上面。微服务架构核心再次强调,微服务架构核心是传统单体应用大拆小,同时拆分为小的微服务后相互之间以轻量的API接口进行通信。而这个拆分本身又分了多个方面。开发团队的拆分代码层的拆分,可独立构建打包数据库的拆分在拆分后为了...

    微服务 2020年12月22日 230 0
  • 权限系统的基本概念和架构

    简介权限系统是我们在系统设计和应用中一种非常常见的系统。一般来说权限系统的功能分为认证和授权两种。认证就非常简单的,验证完用户名密码就算认证成功,而授权里面的套路就很多了,本文将会详细讲解权限系统中的一些基本概念和设计上面要注意的问题,希望大家能够喜欢。授权流程在授权流程中主要有三个部分,分别是资源管理,权限和策略管理,策略的执行。先看下资源管理:首先我们需要创建一个资源服务器...

    架构设计 2020年12月22日 233 0
  • 微服务网关——设计篇

    在《微服务网关——需求篇》中,我们讨论了微服务网关的需求,本文将对微服务网关进行设计。考虑到实际情况的差异,这里实际给出的是设计选项,最终设计基于实际场景来确定。网关功能性设计路由一般情况下,服务对外提供的是RESTful接口,所以一般路由模块根据请求的host, url等规则转发到指定的服务。考虑到路由规则需要频繁的修改发布,为了发布的便利性,考虑针对规则实现热发布。有几种实...

    微服务 2020年12月03日 195 0
  • 浅谈web网站架构演变过程

    前言  我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变。  该系统具备的功能:用户模块:用户注册和管理商品模块:商品展示和管理交易模块:创建交易和管理阶段一、单机构建网站  网站的初期,我们经常会在单机上跑我们所有的程序和软件。此时我们使用一个容器,如tomcat、jetty、jboos,然后直接使用JSP/servlet技术,或者使用一些开...

    架构设计 2020年12月03日 187 0