Skip to main content

Python Bigdata MicroService

欢迎参加python大数据微服务篇的学习。微服务是大数据项目实施的基石。本书将透过一个银行ETL系统的案例,重点阐述进程通信,回调编程,以及微服务调度三大主轴相关的应用案例和设计方案,用于DIY商业级别的高可用ETL组件。

  1. CP01 如何进入大数据的处理的世界:大数据的意涵是数据的规模大到常规的技术方案无法解决。要构建大数据系统,面临第一个难题就是“velocity”(短时间处理大量的数据)的难题。解决的思路是将ETL应用拆分为多个微服务,利用多物理机协同的方案来实现数据的高效处理。微服务设计就是进入大数据的设计的金钥匙。
  2. CP02 如何通过用例来理解微服务:一个大数据的微服务设计,应该从哪里开始的?本课程将微服务的实践技能,划分为“进程通信”,回调编程,微服务调度三大主轴,并设计9个mini项目,帮助大家快速进入大数据的殿堂。
  3. CP03 面向微服务的ETL用例设计:在本篇中,我们将介绍一个如何将银行交易清单批量采集入库的用例模型,其中包含了在python大数据入门篇中,我们介绍的流转换,数据持久化等多个原子用例模型,用于理解如何将多个微服务进行组合来实现一个中型的ETL任务。 为了降低代码编写和调试的难度,我们将用例进行了适当的简化处理,这样读者可以更好的专注于微服务的设计方法。
  4. CP04 基于单进程调用的ETL方案:要实现银行交易清单批量采集入库的功能,有多种不同的解决方案,为了方便读者理解微服务的设计思想,我们首先介绍一种经典的单进程调用的解决方案。在大数据应用兴起以前,这是一种流行的解决方案,因为设计和调试都非常简单。
  5. CP05 基于多进程调用的ETL方案:如果需要装载的数据规模比较大,单进程方案就无法满足性能的需求,此时就需要将运行在一个进程中的多个服务拆分为多进程。分布在不同进程之间的多个服务应该如何协同呢? 队列(queue)是一种经典的进程间通信方案,这一章将展现如何通过多进程+队列的方案构建一个ETL解决方案。
  6. CP06 基于多线程调用的ETL方案:和多进程一样,多线程也是提高ETL处理能力的一种手段。分布在不同线程之间的多个服务应该如何协同呢? 队列(queue)是一种经典的线程程间通信方案,这一章将展现如何通过多线程+队列的方案构建一个ETL解决方案。虽然代码很类似, 用于进程之间通信的queue,和用于线程之间通信的queue有的本质的区别,这个问题需要读者仔细的分辨和理解。
  7. CP07 基于pika的ETL方案:队列(Queue)是进程间通信的最重要的一种解决方案。如何利用队列(queue)来实现进程间通信也有多种不同的解决方案,python的内嵌模块和多进程模块都提供了queue的解决方案, 但是如果程序产出异常,Queue中的消息就会丢失,所以在高可用的ETL方案中,一般要引入专用的queue中间件rabbitmq。在本章中,将利用pika客户端来访问rabbitmq,实现一种高可用的进程间通信解决方案。
  8. CP08 基于kombu的ETL中间件: 要在python编程中使用rabbitmq实现进程间通信,必须借助pika,或者kombu这类的中间件。而要使用第三方的rabbitmq客户端,则需要借助一种回调编程(call back)的设计模式,这是进程间通信中最高效的一种设计方式。本章将对回调编程和kombu客户端的使用进行讲解。
  9. CP09 基于celery的ETL方案: 生成者+消费者模型是微服务拆分的一种常见解决方案。而基于celery中间件可以非常便捷的实现这种设计模式,在本章的案例中,我们将借助celery中间件来实现不同微服务之间的协同(进程间通信),由于celery已经封装了rabbitmq组件,从应用编程的角度,代码的编写将会非常简洁。
  10. CP010 基于celery的高可用ETL方案:借助celery强大的微服务组装能力,我们可以很方便的设计一种高可用的ETL方案。在高可用的ETL方案中,我们会引入一个任务调度层,以便根据当前的计算资源来实现一种弹性的任务调度能力。 此方案目前已经在多个大规模的大数据项目(1000个CPU以上)中应用,验证了可用性,是我们进入大数据世界的一个桥梁。
  11. CP011 基于callback方法来解析XML文件:在大数据的第一本书中,我们讲解过如何通过ET模块实现的xml解析。为了巩固对回调编程的理解,本周我们会借助SAX模块来讲解,如何基于回调接口来实现xml的解析处理。以便帮助大家加深对回调编程的理解,为将来进行分布式编程设计打下坚实的基础。
  12. CP012 利用微服务方案实现敏捷原型分析:在大数据应用中,常常需要敏捷的开展原型研究的工作。在本章中,我们将演示如何通过celery+rabbitmq来设计一个ETL方案,将海量的邮件内容,进行提取以后,分布拷贝到关系型数据库my-sql和新型数据库ES中,展现微服务编程的敏捷性。
Starter
MicroServ
Tutorials
Blog