kafka:
分布式日志收集系统
日志收集+消息
ETL:
数据抽取、转换、加载
Ad-hoc:
即席查询
(查询的时候才知道查询的是什么)
PY4J
Py4J 是一个用 Python 和 Java 编写的库。
通过 Py4J,Python程序 能够动态访问 Java虚拟机 中的 Java对象,Java程序 也能够回调 Python对象。
Redis
https://www.redis.net.cn/tutorial/3502.html
高性能的key-value数据库。
通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
JVM:
java虚拟机
https://www.cnblogs.com/yuechuan/p/8984262.html
https://blog.csdn.net/Luomingkui1109/article/details/72820232
https://blog.csdn.net/qq_41701956/article/details/81664921
高并发:
https://blog.csdn.net/weixin_42476601/article/details/82220027
高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。
提高系统并发能力的方式,方法论上主要有两种:垂直扩展(Scale Up)与水平扩展(Scale Out)。前者垂直扩展可以通过提升单机硬件性能,或者提升单机架构性能,来提高并发性,但单机性能总是有极限的,互联网分布式架构设计高并发终极解决方案还是后者:水平扩展。
互联网分层架构中,各层次水平扩展的实践又有所不同:
(1)反向代理层可以通过“DNS轮询”的方式来进行水平扩展;
(2)站点层可以通过nginx来进行水平扩展;
(3)服务层可以通过服务连接池来进行水平扩展;
(4)数据库可以按照数据范围,或者数据哈希的方式来进行水平扩展;
各层实施水平扩展后,能够通过增加服务器数量的方式来提升系统的性能,做到理论上的性能无限。
K8S/ Kubernetes
https://blog.csdn.net/weixin_43277643/article/details/83382532
1.背景介绍
云计算飞速发展
- IaaS
- PaaS
- SaaS
Docker技术突飞猛进
- 一次构建,到处运行
- 容器的快速轻量
- 完整的生态环境
2.什么是kubernetes
首先,他是一个全新的基于容器技术的分布式架构领先方案。Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg)。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。
Kubernetes是一个完备的分布式系统支撑平台,具有完备的集群管理能力,多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。同时Kubernetes提供完善的管理工具,涵盖了包括开发、部署测试、运维监控在内的各个环节。
Kubernetes中,Service是分布式集群架构的核心,一个Service对象拥有如下关键特征:
- 拥有一个唯一指定的名字
- 拥有一个虚拟IP(Cluster IP、Service IP、或VIP)和端口号
- 能够体统某种远程服务能力
- 被映射到了提供这种服务能力的一组容器应用上
常见的集群资源管理器(如Hadoop YARN,Apache Mesos和Kubernetes)集成
1.Hadoop YARN
待补充
2.Apache Mesos
待补充
3.ElasticSearch
待补充
4.Apache Storm
待补充
UGC
User-generated Content,用户生产内容
DR:disaster recovery (灾难恢复)
最近云很热闹,先是AWS,后是google云故障,这也是在提醒我们掌握主动,学好灾备知识,尽早对业务做好灾备计划是非常重要的;没有一个云提供商能保证永远不出问题,灾难发生时,合理运用DR计划,在第一时间恢复业务,将灾难对于业务造成的影响降到最低是我们的目标。
在磁盘崩溃或其他灾难之后从备份中恢复数据。
原始数据丢失(因为灾难)或被删除后通过备份还原信息的过程。
使用辅助位置在站点出现故障后恢复应用程序和数据。进行灾难恢复需要心跳和复。
对于物理上处于分散区域的群集,管理员可以设置一个策略,用于在由于不可预知的事件导致一个地理区域的群集出现故障时将应用程序从一个位置迁移到另一个位置。进行灾难恢复需要心跳和复制。
灾难恢复 (DR) 具有非常广泛的范围,从脱离站点存储备份磁带,到设置和维护重复的远程备用节点,都可以通过及时将数据复制到远程站点来帮助进行灾难恢复。
DBA 数据库管理员
Database Administrator,简称DBA
是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,属于运维工程师的一个分支,主要负责业务数据库从设计、测试到部署交付的全生命周期管理。
DBA的核心目标是保证数据库管理系统的稳定性、安全性、完整性和高性能。
开发环境、测试环境、生产环境、UAT环境、仿真环境
https://blog.csdn.net/aaa333qwe/article/details/77482099
开发环境(DEV):开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告。
测试环境(UAT):一般是克隆一份生产环境的配置,一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。
生产环境(PROD):是指正式提供对外服务的,一般会关掉错误报告,打开错误日志。可以理解为包含所有的功能的环境,任何项目所使用的环境都以这个为基础,然后根据客户的个性化需求来做调整或者修改。
三个环境也可以说是系统开发的三个阶段:开发->测试->上线,其中生产环境也就是通常说的真实环境。
UAT环境:UAT,(User Acceptance Test),用户接受度测试 即验收测试,所以UAT环境主要是用来作为客户体验的环境。
仿真环境:顾名思义是和真正使用的环境一样的环境(即已经出售给客户的系统所在环境,也成为商用环境),所有的配置,页面展示等都应该和商家正在使用的一样,差别只在环境的性能方面。
在企业级软件的测试过程中,经常会划分为三个阶段——单元测试,SIT和UAT,如果开发人员足够,通常还会在SIT之前引入代码审查机制(Code Review)来保证软件符合客户需求且流程正确。下面简单介绍一下SIT和UAT的基本情况。
SIT(System Integration Testing)系统集成测试,也叫做集成测试,是软件测试的一个术语,在其中单独的软件模块被合并和作为一个组测试。它在单元测试以后和在系统测试之前。集成测试在已经被单元测试检验后进行作为它的输入模式,组织它们在更大的集合,和递送,作为它的输出,集成系统为系统测试做准备。集成测试的目的是校验功能、性能和可靠性要求,配置在主设计项目中。
UAT(User Acceptance Testing)用户验收测试,通常是由最终软件的用户(通常这些用户不了解软件的具体逻辑,而对业务逻辑却相当熟悉)进行的测试,因此是面向最终用户的测试,结束之后通常就可以发布生产环境了。
区别与联系:
SIT是集成测试
UAT是验收测试
从时间上看,UAT要在SIT后面,UAT测试要在系统测试完成后才开始。
从测试人员看,SIT由公司的测试员来测试,而UAT一般是由用户来测试。它们两个之间的专注点是不一样的。UAT主要是从用户层面这些去考虑和着手测试,而SIT主要是系统的各个模块的集成测试。这在整个软件过程理论的基础知识中相当重要的。理论上讲SIT是由专业的测试人员去完成,UAT是由用户去做的。
如果按照规范来的话,做UAT测试的人一定是要对业务很精通的,并且是具有代表性的用户,关注的东西就是业务流程是否通畅是否符合业务的需要。以需求分析文档为重要参考,还有一些用户的操作习惯等等一系列的东西。
QMQ
http://www.sohu.com/a/333091158_505779
分布式消息队列(MQ)是典型的异步通知类型的通信实现,他可以带来很多好处:
• 业务可以专注核心流程,通过消息解耦“通知类”业务,减少核心流程受影响的可能性。
• 可以方便的实现最终一致性,提高服务可用性和吞吐能力。
• 通过错峰和流控可以提高服务可靠性,降低下游系统对上游的影响力