架构

我的历史文章整理(2017-2019)

醉酒当歌 提交于 2019-12-12 11:41:19
我的写作经历 我是一名普通的 Java 开发者,喜欢在网上分享一些个人的故事以及工作中遇到的问题,自 2017 年开始用 “十三” 这个网名在各个博客平台发表文章,常活跃的平台有 CSDN、博客园、掘金、简书等网站,有免费的文章,也有付费的专栏,前前后后大概有 200 篇文章,算是我的写作经历。 从零开始搭建一个精美且实用的管理后台 SSM 搭建精美实用的管理系统 导读:自己动手实现 JavaWeb 后台管理系统 第01课:Spring MVC+ Spring + Mybatis “三大框架”介绍 第02课:前期准备工作及基础环境搭建 第03课:三大框架的整合 第04课:Tomcat 8 安装部署及功能改造 第05课:产品设计之搭建精美实用的后台管理系统 第06课:前端选型 AdminLTE3 第07课:登录模块的系统设计和实现 第08课:使用 JqGrid 插件实现分页功能 第09课:弹框组件整合——完善添加和修改功能 第10课:图片管理模块 第11课:多图上传与大文件分片上传、断点续传 第12课:文件导入导出功能 第13课:富文本信息管理模块 第14课:SweetAlert 插件整合及搜索功能实现 第15课:项目发布——Linux 命令及发布流程 第16课:项目优化篇之日志输出 第17课:项目优化之单元测试 第18课:项目优化之数据库连接池 第19课:项目优化之 Druid

zabbix监控的基础概念、工作原理及架构

浪子不回头ぞ 提交于 2019-12-12 10:58:23
一、什么是zabbix及优缺点(对比cacti和nagios) Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 agent端:主机通过安装agent方式采集数据。 server端:通过收集agent发送的数据,写入数据库(MySQL,ORACLE等),再通过php+apache在web前端展示. zabbix = cacti + nagios 优点:基于两款工具优点于一身并更强大,实现企业级分布式监控。 缺点:2.2版本带宽占用大但是升级到2.4版本后更节省了带宽资源,其它再无发现。 二、监控功能 主机的性能监控、网络设备性能监控、数据库性能监控、多种告警方式、详细的报表图表绘制 监控主机zabbix有专用的agent,可以监控Linux,Windows,FreeBSD等 。 监控网络设备zabbix通过SNMP,ssh(不多用) 可监控对象 设备:服务器,路由器,交换机 软件:OS,网络,应用程序 主机性能指标监控 故障监控: down机,服务不可用,主机不可达 二、工作原理 一个监控系统运行的大概的流程是这样的: zabbix agent需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端

一份微服务架构手稿图,彻底搞定微服务核心原理!

怎甘沉沦 提交于 2019-12-12 10:20:35
微服务的概念最早在 2012 年提出,在 Martin Fowler 的大力推广下,微服务在 2014 年后得到了大力发展。今天我们通过一组手绘图来梳理下微服务的核心架构。 什么是微服务? 微服务 Microservices 之父,马丁.福勒,对微服务大概的概述如下: 就目前而言,对于微服务业界并没有一个统一的、标准的定义(While there is no precise definition of this architectural style ) 。 但通常在其而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。 服务之间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API ) 。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。 另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务。可以使用不同的语言来编写服务,也可以使用不同的数据存储。 根据马丁.福勒的描述,我总结了以下几点: ①小服务 小服务,没有特定的标准或者规范,但他在总体规范上一定是小的。 ②进程独立 每一组服务都是独立运行的

Spring Cloud的核心成员、以及架构实现详细介绍

六眼飞鱼酱① 提交于 2019-12-12 07:54:23
什么是微服务 微服务的概念源于Martin Fowler所写的一篇文章“Microservices”。 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTfulAPI)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。 SOA和微服务的区别 Martin Fowler提出来这一概念可以说把SOA的理念继续升华,精进了一步。 微服务架构强调的第一个重点就是 业务系统需要彻底的组件化和服务化 ,原有的单个业务系统会拆分为多个可以独立开发,设计,运行和运维的小应用。这些小应用之间通过服务完成交互和集成。 从服务粒度上,既然是微,必然微服务更倡导服务的细粒度,重用组合,甚至是每个操作(或方法)都是独立开发的服务,足够小到不能再进行拆分。而SOA没有这么极致的要求

分布式概念

霸气de小男生 提交于 2019-12-12 07:39:23
集群与分布式区别 集群:复制模式,每台机器做一样的事。 分布式:两台机器分工合作,每台机器做的不一样。 分布式好处: 独立开发,部署,测试 易于扩展 复用性高,例如:所有的产品都可以使用该系统作为用户系统,无需重复开发。 架构演进 架构演进一: 早期雏形 特征:应用程序主要做静态文件读取,返回内容给浏览器。 架构演进二: 数据库开发(LAMP特长) 特征:应用程序主要主要读取数据表值,填充html模块。业务逻辑简单,写sql处理。 主要:增删改查 主要压力:来自查询,多表联合,数据量膨胀。 架构演进三: javaweb的雏形 tomcat + servlet + jsp + mysql。一个war包打天下 项目结构:ssh/ssm三层结构。 架构演进四: javaweb的集群发展 硬件机器的横向复制,对整个项目结构无影响。 架构演进五: javaweb的分布式发展 特征:将Service层单独分离出去,成为一个单独的项目jar。单独运行。 Web服务器通过rpc框架,对分离出去的service进行调用。 架构演进六: javaweb的微服务发展 从业务角度,细分业务为微服务,每一个微服务是一个完整的服务(从http请求到返回)。在微服务内部,将需要对外提供的接口,包装成rpc接口,对外部开放。 服务治理: 1、无论是分布式拆分,还是微服务拆分,最后形成的服务层应用

微服务介绍

こ雲淡風輕ζ 提交于 2019-12-12 03:52:12
微服务是什么? 1、微服务核心就是把传统的单机应用,根据业务将单机应用拆分为一个一个的服务,彻底的解耦,每一个服务都是提供特定的功能,一个服务只做一件事,类似进程,每个服务都能够单独部署,甚至可以拥有自己的数据库。这样的一个一个的小服务就是 微服务. 2、比如传统的单机电商应用, tulingshop 里面有 订单/支付/库存/物流/积分等模块(理解为servcie) 我们根据 业务模型来拆分,可以拆分为 订单服务,支付服务,库存服务,物流服务,积分服务 3、若不拆分的时候,我的非核心业务积分模块 出现了重大bug 导致系统内存溢出,导致整个服务宕机. 若拆分之后,只是说我的积分微服务不可用,我的整个系统核心功能还是能使用. 拆分前和拆分后的系统 微服务架构是什么? 微服务架构是一个架构风格, 提倡 1、将一个单一应用程序开发为一组小型服务. 2、 每个服务运行在自己的进程中 3、 服务之间通过轻量级的通信机制(http rest api) 4、每个服务都能够独立的部署 5、每个服务甚至可以拥有自己的数据库 微服务以及微服务架构的是二个完全不同的概念 微服务强调的是服务的大小和对外提供的单一功能,而微服务架构是指把 一个一个的微服务组合管理起来, 对外提供一套完整的服务. 微服务的优缺点 ①:每个服务足够小,足够内聚,代码更加容易理解,专注一个业务功能点(对比传统应用

微服务

a 夏天 提交于 2019-12-12 03:18:12
微服务 1 微服务的介绍 1.1 微服务的定义 微,狭义来讲就是体积小、著名的"2 pizza 团队"很好的诠释了这一解释(2 pizza 团队最早是亚马逊 CEO Bezos提出来的,意思是说单个服务的设计,所有参与人从设计、开发、测试、运维所有人加起来 只需要2个披萨就够了 )。 而所谓服务,一定要区别于系统,服务一个或者一组相对较小且独立的功能单元,是用户可以感知最小功能集。 1.2微服务的由来 微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理 1.3微服务的特点 微服务架构和其他架构的对比 特点: 1)集中式架构:单体无分散 2)分布式架构:分散压力 3)微服务架构:分散能力 微服务架构优势 1)每个微服务组件都是简单灵活的,能够独立部署。不再像单体应用时代,应用需要一个庞大的应用服务器来支撑。 2)可以由一个小团队负责更专注专业,相应的也就更高效可靠。 3)微服务之间是松耦合的,微服务内部是高内聚的,每个微服务很容易按需扩。 2 微服务的四种原则 2.1

基于AWS的云架构设计最佳实践——传统环境和云计算环境之间的差异

大城市里の小女人 提交于 2019-12-12 00:34:18
译者序 AWS用户广泛,产品线复杂,AWS发布的白皮书《Architecting for the Cloud-AWS Best Practices》介绍了常见场景下云架构的最佳实践,不仅对于使用AWS的用户,对于广大使用云的用户都有参考意义,新钛云服工程师特意翻译了本白皮书,供广大使用云的用户参考。 译者整理的脑图 摘要 本白皮书适用于在Amazon Web Services(AWS)上的构建解决方案的架构师和开发人员。本白皮书提供有关技术设计模型的架构指导和建议,以及如何应用于云计算环境中。本白皮书提供了在AWS上设计解决方案时的关键概念和差异。本白皮书还讨论了如何利用特定于云计算动态特性的属性,如弹性和基础设施自动化。这些模型可以为对选择、操作状态和实现状态进行更详细的审查提供上下文,就像《AWS Well-Architected Framework》中详细描述的那样。 介绍 将应用程序迁移到AWS,即使没有重大更改(称为直接迁移的方法),也可为组织提供安全且经济高效的基础架构优势。但是,为了充分利用云计算可能带来的弹性和灵活性,工程师必须改进其架构以利用AWS功能。 对于新应用程序,基于云的IT体系架构模型可以帮助提高效率和可伸缩性。这些新架构可以支撑从互联网规模数据的实时分析到具有数千个连接的物联网(IoT),或移动设备的不可预测流量的应用程序的任何内容。

Docker工作原理

梦想与她 提交于 2019-12-11 22:55:44
Docker架构的工作原理 对Docker不太熟悉的朋友可以参考博文: Docker简介及安装配置详解 首先Docker是基于Go语言进行开发的,而且是基于C/S结构进行工作的,如图: 从图中可以看出: (1)用户是使用Docker Client与Docker Daemon建立通信,并发送请求给后者; (2)Docker Daemon作为Docker架构中的主体部分,首先提供Server的功能使其可以接受Docker Client的请求;而后Engine(引擎)执行Docker内部的一系列工作,每一项工作都是以一个Job的形式存在; (3)Job的运行过程中,当需要容器镜像时,则从Docker Registry(docker仓库)中下载镜像,并通过graphdriver(镜像管理驱动)将下载镜像以Graph(图像)的形式存储;当需要为Docker创建网络环境时,通过networkdriver(网络管理驱动)创建并配置Docker容器网络环境;当需要限制Docker容器运行资源或执行用户指令等操作时,则通过execdriver(执行管理驱动)来完成。 (4)libcontainer(容器库)是一项独立的容器管理包,networkdriver以及execdriver都是通过libcontainer来实现具体对容器进行的操作。当执行完运行容器的命令后

微服务之数据同步Porter

萝らか妹 提交于 2019-12-11 21:26:58
Porter是一款数据同步中间件,主要用于解决同构/异构数据库之间的表级别数据同步问题。 背景 在微服务架构模式下深刻的影响了应用和数据库之间的关系,不像传统多个服务共享一个数据库,微服务架构下每个服务都要有自己的数据库。如果你想获得微服务带来的好处,每个服务独有一个数据库是必须的,因为微服务强调的就是松耦合。我们希望数据库就和服务一样,要有充分的独立性、可以和服务一起部署、一起扩展、一起重构。同时,还需要兼顾数据中心的数据聚合、DBA的多种数据库备份、报表中心的业务报表等等矛盾问题。因此便产生了「Porter」项目。 微服务改造过程中,无法避免的一个坎,那就是垂直拆库,根据不同的子服务,把过去的「一库多服」拆分成「一库一服」。 一库多服还是一库一服? 不管是否是微服务架构,应用的各个模块之间都需要频繁的通信、协作、共享数据,实现系统的整体价值。区别点在于单体应用是通过本地方法调用来完成;在微服务中是通过远程API调用完成。 而共享数据最贱的方式就是采用共享数据库模式,也就是单体应用中最常用的方式,一般只有一个数据库,如图一库多服和一库一服的方式: 一库多服的架构模式通常会被认为是微服务架构下的反范式,它的问题在于: 稳定性:单点故障,一个数据库挂掉,整批服务全部停止。服务独立性被扼杀? 耦合性:数据在一起,会给贪图方便的开发或者DBA工程师编写很多数据间高度依赖的程序或者工具;