12 珠宝壹佰.未闻

尚未进行身份认证

我要认证

珠宝壹佰 首席架构师、技术总监。

等级
TA的排名 1w+

【十】分布式微服务架构体系详解——架构设计理念

前言前面几课的内容从分布式架构的一些常见场景出发,介绍了分布式的各种问题和解决方案以及目前一些比较成熟的技术实现。在实施微服务架构时,我们更多的是使用这些成熟的技术。作为一个架构师或者想在技术架构领域深耕的开发人员,对于分布式系统相关的技术不仅仅要会用。在做技术选型及方案时,更需要对这些技术的实现思路、算法以及优点和限制进行了解。本节课内容作为整个课程系列的收尾,会把微服务架构结合Docker的一些技术选型进行介绍,包括服务的持续集成、容器编排以及日志采集和安全技术做个简单的引申,希望能给各位读者一些参考

2020-07-28 10:29:08

【九】分布式微服务架构体系详解——共识问题

前言分布式架构体系中,一致性和共识是分不开的概念,一致性也是我们解决很多分布式问题的关键。比如通过一致性模型可以实现数据集群的数据复制;通过基于阻塞的2PC协议可以实现分布式的原子性提交,保证事务数据的一致。我们在07课 分布式一致性介绍了分布式一致性的一些理论,并且引出了分布式共识(Consensus)的话题。共识就是让分布式系统中所有节点都对一些值达成共识。在分布式系统中,解决共识问题可以帮助我们处理很多分布式问题,包括前一章介绍的原子提交协议,以及本章会稍后介绍的全序广播。本文主要介绍具有容错特

2020-07-28 10:27:45

【八】分布式微服务架构体系详解——分布式事务实践

前言分布式计算领域中,一个重要的场景就是共识问题。前文也简单提及过,共识即是让分布式系统中所有节点对于一些值达成共识。共识问题的处理一般用于Leader选举(比如单主复制的集群,只有主节点接受数据写入,如果这个leader 节点挂了,需要其他节点能选举出新的leader,使用选举算法需保证选举出一个新Leader)以及原子提交(跟事务ACID的A概念是一样的,分布式的原子提交需要保证所有节点都最终获得一样的数据结果,事件的操作都执行成功或者都放弃)。我们常说的分布式事务一般是指解决分布式系统的原子提交(A

2020-07-28 10:26:36

【七】分布式微服务架构体系详解——分布式一致性

前言我们在前面几篇文章中介绍了,分布式环境下会有网络延迟,节点挂掉的问题。这些问题解决的理论都和分布式一致性息息相关。无论是数据存储的集群,或者微服务系统的集群,为了达到高可用性,我们希望系统能够对分布式问题有很好的容错,保证一直会给用户一个好的Response。通过本章节,我们将了解到分布式系统中的一些“可能”以及“不可能”。本文先介绍分布式系统中几个重要的理论:CAP、BASE、FLP不可能结果,以及这些理论的应用领域,可以让大家对耳熟能详的技术的背后理论有个更好的了解。然后再介绍下分布式一致性模型

2020-07-28 10:19:08

【六】分布式微服务架构体系详解——分布式存储集群的事务

前言微服务架构下,比较典型的一个分布式问题就是并发。并且并发访问的资源可能分布在不同的数据存储的实例上。比如很多电商系统的下单减库存流程。订单的微服务和商品的微服务,底层的数据库是分离的。如果没有并发的事务控制,并发场景下会出现“超卖”。如果订单的DB和商品的DB是同一个库,可以使用关系型数据库支持的本地事务做处理。但分布式场景下类似的并发问题要怎么解决?这个也是分布式架构必须要处理的课题之一。为了理解并解决应用系统层面的分布式事务问题,我们需要先从最底层的存储服务的事务讲起,后续的章节基本都是围绕“分布

2020-07-28 10:18:08

【五】分布式微服务架构体系详解——服务发现和服务通信

前言微服务架构的概念比容器技术早,但是却随着容器技术在13年的兴起,基于容器技术的微服务架构越来越被广泛应用。容器的轻量级部署方式很适合为每个微服务提供基础运行环境。本文会基于Docker容器,先介绍下服务发现的问题和可用的方案,然后对同步通信以及异步通信的技术做一些对比介绍。最后会结合DDD(Domain-Driven Design)的思想来分析合理的通信模型。Docker 容器的基础知识本文会略过,对Docker感兴趣的同学还可以去看看 Docker源码 ,Docker是用Go语言写的,Go语言很

2020-07-28 10:17:09

【四】分布式微服务架构体系详解——数据分区

前言对于大规模的分布式集群,或者对于数据密集型应用来说,为了提高吞吐量和性能以及可用性,一般会结合使用数据复制和数据分区。数据复制将对单库的请求压力分给更多的数据库实例,数据分区将每个实例中的庞大的数据文件以一定规则切分成更小的数据文件,并可以存储到不同的磁盘(或数据节点Node)上,提高请求的并发性能,同时,增加了扩展性。本文将介绍分布式存储集群的高可用的另外一个解决方案——数据分区,以及以Mysql为示例看一些数据分区的具体实现。理解数据分区复制和分区的差别是什么?请看下面一张图:分区和分表

2020-07-28 10:15:45

【三】分布式微服务架构体系详解——数据复制

前言一个高可用的分布式系统,底层的存储也是需要高性能、高可用的。上一篇介绍了一些数据存储产品,如果数据存储服务都是单库的,那么在唯一的单库发生故障时,将导致上层的微服务系统也都无法正常运行。为了加强可用性,我们需要更多的数据库节点,一个节点挂了,可以快速切换到可用的节点提供服务。有更多的节点提供服务可以带来很多好处,比如高可用、高性能,基于地理分布的数据中心可以提升用户访问速度。为了提供更好的性能和可用性,也需要解决一些复杂的问题,尤其是多Node的数据复制问题。第一篇文章中有介绍到网络延迟的问题,在多

2020-07-28 10:14:52

【二】分布式微服务架构体系详解——数据存储

前言微服务架构下,很适合用DDD(Domain-Drive Design)思维来设计各个微服务。使用领域驱动设计的理念,工程师们的关注点需要从CRUD思维中跳出来。更多关注通用语言的设计、实体以及值对象的设计。至于数据仓库,会有更多样化的选择。分布式系统中数据存储服务是基础,微服务的领域拆分、领域建模可以让数据存储方案的选择更具灵活性。不一定所有的微服务都需要有一个底层的关系型数据库作为实体对象实例的存储。以一个简单的电商系统为例:“用户微服务”和“商品微服务”都分别需要关系型数据库存储结构化的关联数据

2020-07-28 10:13:38

【一】分布式微服务架构体系详解——分布式系统的问题

前言无论是SOA或者微服务架构,都是必须要面对和解决一些分布式场景下的问题。如果只是单服务、做个简单的主备,那么编程会成为一件简单幸福的事。只要没有bug,一切都会按照你的预期进行。然而在分布式系统中,如果想当然得去按照单服务思想编程和架构,那可能会收获很多意想不到的“惊喜”:网络延迟导致的重复提交、数据不一致、部分节点挂掉但是任务处理了一半等等。在分布式系统环境下编程和在单机器系统上写软件最大的差别就是,分布式环境下会有很多很‘诡异’的方式出错,所以我们需要理解哪些是不能依靠的,以及如何处理分布式系统的

2020-07-28 10:09:41

【0-导言】如何构建分布式系统的知识体系

对于开发工程师们来说,相信对于这种招聘要求的描述并不陌生:”熟悉分布式系统的设计和应用;熟悉分布式、缓存、消息、搜索等机制;能对分布式常用技术进行合理应用,解决问题”。 现在基本上大多数大、中型企业都会要求工程师们,除了要能在分布式环境中进行开发,还要了解其中的原理、机制,对于架构师来说还需要能够独立设计分布式系统。 分布式(计算机)系统的概念起源很早,目前已经基本涵盖了大多数系...

2018-09-02 21:57:48

分布式微服务架构的技术体系

花了一些时间对微服务架构体系的理论以及实践进行了总结。一部分课程已经整理完毕上线了。 课程链接:微服务架构的技术体系详解 课程简介: 微服务架构的技术体系、社区目前已经越来越成熟。在最初系统架构的搭建,或者当现有架构已到达瓶颈需要进行架构演进时,很多架构师、运维工程师会考虑是否需要搭建微服务架构体系。虽然很多文章都说微服务架构是复杂的、会带来很多分布式的问题,但只要我们了...

2018-07-10 20:55:19

JVM性能调优实践——G1 垃圾收集器分析、调优篇

前言关于G1 GC以及其他垃圾收集器的介绍可以参考前一篇JVM性能调优实践——G1 垃圾收集器介绍篇。了解了G1垃圾收集器的运行机制之后,就可以针对一些GC相关参数来调整内存分配以及运行策略。下文的调优主要针对G1垃圾收集器进行介绍,以及会分析一下G1 GC的日志格式。 G1 GC日志分析在执行具体的调优任务前,需要结合GC日志以及应用本身的特点。打印详细GClog,...

2018-06-04 13:58:15

基于Docker的微服务架构的企业级服务集群实践(五)—— 服务集群

服务集群的解决方案企业在实践使用Docker部署、运行微服务应用的时候,无论是一开始就布局微服务架构,或者从传统的单应用架构进行微服务化迁移。都需要能够处理更复杂的集群中的服务调度、编排、监控等问题。下面主要为大家介绍在服务集群下,如何更安全、高效得使用Docker,以及在架构设计上,需要考虑的方方面面。 负载均衡这里说的是集群中的负载均衡,如果是纯服务端API的

2018-05-31 09:53:39

基于Docker的微服务架构的企业级服务集群实践(四)—— 持续集成部署

微服务的持续集成部署前三篇主要介绍了微服务的服务发现、服务通信以及API Gateway。整体的微服务架构的模型初见。在实际的开发、测试以及生产环境中。使用Docker实现微服务,集群的网络环境会更加复杂。微服务架构本身就意味着需要对若干个容器服务进行治理,每个微服务都应可以独立部署、扩容、监控。本篇会继续探讨如何进行Docker微服务的持续集成部署。 镜像仓库用Docke

2018-05-31 09:53:28

基于Docker的微服务架构的企业级服务集群实践(三)——API Gateway的使用

使用API Gateway处理微服务请求转发、合并前面两篇Docker微服务的服务发现以及Docker微服务的服务间通信机制。主要介绍了如何解决微服务的服务发现和通信问题。 在微服务的架构体系中,为了减少服务间的耦合,在划分服务间的限界上下文的时候。会尽量减少微服务之间的 调用。在实际的需求场景中,往往要同时请求多个微服务资源。 解耦微服务的调用如下面一个场景,”用户订

2018-05-31 09:53:16

基于Docker的微服务架构的企业级服务集群实践(二)——服务间通信

服务间的IPC机制按照微服务的架构体系,解决了服务发现的问题之后。就需要选择合适的服务间通信的机制。如果是在Springboot应用中,使用基于Http协议的REST API是一种同步的解决方案。而且Restful风格的API可以使每个微服务应用更加趋于资源化,服务化的松耦合思想靠近。 如果每个微服务是使用DDD的思想的话,那么需要每个微服务尽量不使用同步的RPC机制。异步的基于消息的方式比

2018-05-31 09:53:00

基于Docker的微服务架构的企业级服务集群实践(一)——服务发现

前言基于Docker的容器技术是在15年的时候开始接触的。两年多的时间,作为一名Docker的DevOps,也见证了Docker的技术体系的快速发展。本文主要是结合在公司搭建的微服务架构的实践过程,做一个简单的总结。希望给在创业初期探索如何布局服务架构体系的DevOps,或者想初步了解企业级架构的同学们一些参考。(PS:本来想一口气写完,但发现一个模块就写了太久,后续会持续更新。

2018-05-31 09:52:48

JVM性能调优实践——G1 垃圾收集器介绍篇

前言前面两篇主要整理了性能测试的主要观察指标信息:性能测试篇,以及JVM性能调优的工具:JVM篇。这一篇先简单总结一下GC的种类,然后侧重总结下G1(Garbage-First)垃圾收集器的分代,结合open-jdk源码分析下重要算法如SATP,重要存储结构如CSet、RSet、TLAB、PLAB、Card Table等。最后会再梳理下G1 GC的YoungGC,MixedGC收集过程。 ...

2018-05-30 17:34:59

JVM性能调优实践——JVM篇

前言在遇到实际性能问题时,除了关注系统性能指标。还要结合应用程序的系统的日志、堆栈信息、GClog、threaddump等数据进行问题分析和定位。关于性能指标分析可以参考前一篇JVM性能调优实践——性能指标分析。 JVM的调优和故障处理可以使用JDK的几个常用命令工具。因为本文是基于Docker容器内部的Springboot服务。需要调整一下docker容器的启动参数,才可以使用jma...

2018-05-24 11:46:49

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。