架构

[译]软件架构师之路

拟墨画扇 提交于 2020-02-25 19:12:37
今天给大家带来一篇自己翻译的干货《软件架构师之路》。本周Github上升很快的项目。其内容对致力于成为软件架构师(不论前后端)的同学应该都会有极大的帮助。 项目地址: 中文地址 https://github.com/gamedilong/SoftwareArchitect-CN 原文地址 https://github.com/justinamiller/SoftwareArchitect 如果有看完英文原文,发现本文翻译内容中存在问题或者错误的欢迎到中文Git地址PR,如能够对大家起到一定的帮助也欢迎star 内容 什么是软件架构 软件架构的层次 软件架构师的典型工作内容 软件架构师的重要技能 架构师的技术路线图 相关书籍 什么是软件架构? 软件架构师是一名软件开发专家,他可以进行高层设计选择并决定技术标准,包括软件编码标准,工具和平台。 (出处: 维基百科:软件架构师) 软件架构(architecture)是一个系统的基本组织,由其组件、它们之间的相互关系和环境以及决定系统设计和演化的原则来表示。 (出处: 软件架构手册) 软件架构的层次 软件架构可以被抽象的分为几个层次,不同的层次对技能的要求不同。对层次有很多不同的划分,我最喜欢如下这三种划分: 应用级 : 最低层次的架构。聚焦单个具体的应用。 非常注重细节, 底层设计。 沟通仅限入单个开发团队。 解决方案级 : 中级别的架构

zabbix监控理论讲解

孤街醉人 提交于 2020-02-25 16:03:15
简介 Zabbix是一个企业级的开源分布式监控解决方案,由C语言编写而成的底层架构(server端和agent端),由一个团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利。 1、Zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置。 2、被监控端:主机通过安装agent方式采集数据,网络设备通过SNMP方式采集数据 3、Server端:通过收集SNMP和agent发送的数据,写入MySQL数据库,再通过php+apache在web前端展示。 Zabbix运行条件 **1、server** Zabbix Server需运行在LAMP(Linux+Apache+Mysql+PHP)环境下,对硬件要求低 **2、Agent** 目前已有的agent基本支持市面常见的OS,包含Linux、HPUX、Solaris、Sun、windows等 **3、SNMP** 支持各类常见的网络设备 工作原理 Agentd安装在被监控的主机上,Agent负责定期收集客户端本地各项数据,并发送至Zabbix Server端,Zabbix Server收到数据,将数据存储到数据库中,用户基于Zabbix WEB可以看到数据在前端展现图像。当Zabbix监控某个具体的项目,改项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括

1.微服务介绍

点点圈 提交于 2020-02-25 15:48:20
1.什么是微服务 使用一套小服务来开发各个应用的方式,每个服务启动单独的进程,一般采用轻量级的通讯机制互联,并且它们可以通过自动化的方式部署。 微服务是一种设计思想。 2.微服务的特点 单一职责:独立的业务单独放在一个项目里,比如订单服务作为一个项目。 轻量级的通信:http,rpc通信。 隔离性:每个服务相互隔离,不干扰 有自己的数据 技术多样性 3.微服务诞生的背景 互联网行业的快速发展,需求变化快,用户数量变化快。 敏捷开发深入人心,用最小的代码,做最快的迭代,频繁修改、测试、上线。 容器技术的成熟,是为服务的技术基础。 4.互联网架构演进之路 4.1单体架构 单体架构: 1.所有功能集成在一个项目中 2.项目整个打包,可以部署到服务器运行 3.应用于数据库可以分开部署,提高性能 优点: 1.小项目的首选,开发成本低,架构简单。 缺点: 1.项目复杂后,很难扩展和维护 2.扩展成本高,有瓶颈 3.技术栈受限制 4.2垂直架构 垂直架构: 1.对于单体架构的拆分,大项目拆成单个项目结构 2.存在数据冗余 3.项目之间要处理数据同步,通过数据库同步 优点: 1.小项目的首选,架构简单。 2.避免单体架构的无限扩大 3.技术不受限制 缺点: 1.很多功能放在一个工程中,有一定的瓶颈 2.系统性能扩展要通过集群节点扩展,成本较高 4.3SOA架构(面向服务的架构) SOA架构: 1

云计算工程师面试题集锦,常见云计算面试题及答案

假如想象 提交于 2020-02-25 15:36:39
受政策持续加码及技术突破的双重利好,我国云计算产业进入发展机遇期,云计算人才也成为企业高薪聘用的对象。很多有志学子看好云计算的未来前景,通过参加培训班快速掌握技术,那么学习效果怎么样呢?下面分享常见的云计算面试题及答案助力你准确定位、更快入职。 云计算的不同层包括哪些? 1)SaaS:软件即服务,它让用户可以直接访问云应用程序,不必在系统上安装任何东西。 2)IaaS:基础设施即服务,它从硬件(比如内存和处理器速度等)等层面提供了基础设施。 3)PaaS:平台即服务,它为开发人员提供了云应用程序平台。 云计算中弹性与可扩展性的区别是什么? 可扩展性是云计算的一个特点,借助可扩展性,只要相应增加资源容量,就可以处理增加的工作负载。而弹性强调启用和停用庞大的资源容量这一概念。 在云架构中,必需的不同部分有哪些? 1)云入站;2)处理器速度;3)云存储服务;4)云提供商服务;5)云间通信。 在云架构中,经历的不同阶段有哪些? 1)启动阶段;2)监测阶段;3)关闭阶段;4)清理阶段。 云架构以哪些方式来提供自动化和性能透明度? 为了提供性能透明度和自动化,云架构使用许多工具。它可以管理云架构和监测报告,还可以共享使用云架构的应用程序。自动化是云架构的关键部分,有助于改善质量级别。 如何理解混合云和社区云? 混合云:包括多家服务提供商,它结合了公共云和私有云的功能

Mysql--逻辑架构

大兔子大兔子 提交于 2020-02-25 12:09:36
Mysql 系列文章主页 =============== Mysql 的逻辑架构(网上搜索的两张图片) 和其它数据库相比,Mysql 有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上, 插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离 。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。 总体来说,四层结构: 连接层 :客户端和连接服务 服务层 :完成核心的服务功能(如Sql接口),并完成缓存的查询、Sql的分析和优化以及部分内置函数的执行。服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化(如确定查询表的顺序、是否使用索引等),最后生成相应的执行操作。 引擎层 :存储引擎层,真正的负责 Mysql 中数据的存储和提取,主要是 MyISam 和 InnoDB。 存储层 :将数据存储到物理设备上 ======下一篇====== Mysql--七种 Join 查询 来源: https://www.cnblogs.com/cyhbyw/p/8899016.html

MySQL三层逻辑架构

感情迁移 提交于 2020-02-25 11:32:06
MySQL的存储引擎架构将查询处理与数据的存储/提取相分离。下面是MySQL的逻辑架构图: 第一层负责连接管理、授权认证、安全等等。 每个客户端的连接都对应着服务器上的一个线程。服务器上维护了一个线程池,避免为每个连接都创建销毁一个线程。当客户端连接到MySQL服务器时,服务器对其进行认证。可以通过用户名和密码的方式进行认证,也可以通过SSL证书进行认证。登录认证通过后,服务器还会验证该客户端是否有执行某个查询的权限。 第二层负责解析查询(编译SQL),并对其进行优化(如调整表的读取顺序,选择合适的索引等)。对于SELECT语句,在解析查询前,服务器会先检查查询缓存,如果能在其中找到对应的查询结果,则无需再进行查询解析、优化等过程,直接返回查询结果。存储过程、触发器、视图等都在这一层实现。 第三层是存储引擎,存储引擎负责在MySQL中存储数据、提取数据、开启一个事务等等。存储引擎通过API与上层进行通信,这些API屏蔽了不同存储引擎之间的差异,使得这些差异对上层查询过程透明。存储引擎不会去解析SQL。 来源: https://www.cnblogs.com/yumo1627129/p/9511213.html

初识网络编程

[亡魂溺海] 提交于 2020-02-25 10:45:14
网络编程 ---------------------------不定时的更新开始了,且更且珍惜------------------------------ 我要每次都写一遍:前面的还没补完,以此催促不定时更新的我 网络编程 软件开发架构:有两种,c/s架构、b/s架构    c/s架构:        c:客户端        s:服务端    b/s架构:        b:浏览器        s:服务器   什么是服务端?什么是客户端?        从名字我们也能大致了解到它们的作用,服务端提供服务,客户端体验服务。        服务端:24小时不间断通过服务,谁来就服务谁        客户端:想体验服务的时候就去找服务端体验服务       手机端:看起来c/s架构好像比较火,其实不然,微信小程序、支付宝第三方接口:统一接口 都是b/s架构   PC端:b/s比较火   本质上:b/s其实也是c/s 学习网络编程 >>> 开发c/s架构的软件 并发编程,前端,数据库,框架 >>> 开发b/s架构的软件 目的:需要实现远程数据传输(起源于美国军事) 那么想要实现远程通信,第一个需要具备的条件就是:物理连接介质。 而计算机与计算机之间实现远程通信,光有物体连接介质是不够的,还需要一个共同的标准即协议 ’‘’ 我微笑码字,关于python的浪漫,原来真心更新博客并不这么简单

Android深度探索(卷1):安装C/C++交叉编译环境

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-25 02:45:50
X86架构的CPU采用的是复杂指令集(Complex Instruction Set Computer,CICS),而ARM架构的CPU使用的是精简指令集(Reduced Instruction Set Computer,RISC)。由于这两种架构的CPU使用了不同的指令集,因此在X86架构上开发可运行在ARM架构上的程序就必须要使用交叉编译器。通常交叉编译器和相关工具包含的了很多可执行文件以及大量的共享库及头文件等资源。这些资源的集合称为交叉编译环境。 在Internet上可以找到集成好的交叉编译环境,Android NDK和Android源代码中也包含的交叉编译环境。当然,如果我们需要一个完全独立的交叉编译环境,可以下载集成好的交叉编译环境,也可以自己制作(比较复杂,建议读者下载集成好的交叉编译环境)。下面介绍一个CodeSourcery交叉编译环境,这个交叉编译环境直接下载安装就可以安装。 读者可通过如下的网站访问CodeSourcery下载页面。 http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/ 上面的页面并未直接提供CodeSourcery的下载链接,读者可以点击“Download the GNU/Linux Release”链接

Kubernetes(K8s)入门到实践(一)----Kubernetes入门

a 夏天 提交于 2020-02-24 23:03:32
前言 作为一名网络工程的大学生,在前段时间学习了云计算和大数据的相关技术后,我迫切的想要获得更多的自动化持续交互的相关技术。目前非常火热的Kubernetes技术简称(K8s)是由谷歌开源的Docker容器集群管理系统,功能非常强大,也激起了我浓厚的学习兴趣。 以后我会将这一系列关于Kubernetes的技术文章和学习心得一并分享出来,供大家一块学习和交流。 1. Kubernetes是什么 首先, 我们在学习Kubernetes之前一定要先了解一下什么是Kubernetes。 第一,它是一个全新的基于容器技术的分布式架构领先方案,并且是由谷歌保密十几年之久的秘密武器-Borg的一个开源版本。 Borg是谷歌的一个久负盛名的内部使用的大规模集群管理系统,它基于容器技术,目的是实现资源管理的自 动化,以及跨多个数据中心的资源利用率的最大化。 然后,Kubernetes是一个开放的开发平台。与J2EE不同,它不局限于 任何一种语言 ,没有限定任何编程接口,所以不论是用Java、Go、C++还是用Python编写的服务,都可以被映射为Kubernetes的Service(服务),并通过标准的TCP通信协议进行交互。 此外,Kubernetes平台对现有的编程语言、编程框架、中间件没有任何侵入性,因此现有的系统也很容易改造升级并迁移到Kubernetes平台上。 最后