- 博客(142)
- 收藏
- 关注
原创 复杂度来源------可扩展性
软件系统复杂度的第三个来源可扩展性。可扩展性指系统为了应对将来需求变化而提供的一种扩展能力,当有新的需求出现时,系统不需要或者仅需要少量修改就可以支持,无须整个系统重构或者重建。 由于软件系统固有的多变性,新的需求总会不断提出来,因此可扩展性显得尤其重要。在软件开发领域,面向对象思想的提出,就是为了解决可扩展性带来的问题;后来的设计模式,更是将可扩展性做到了极致。...
2024-04-14 21:31:00
785
原创 复杂度来源------低成本、安全、规模
软件系统复杂度的另外三个来源低成本、安全、规模低成本 当架构方案只涉及几台或者十几台服务器时,一般情况下成本并不是我们重点关注的目标,如果架构方案涉及几百上千甚至上万台服务器,成本就会变成一个非常重要的架构设计考虑点。 当我们设计“高性能”“高可用”的架构时,通用的手段都是增加更多服务器来满足“高性能”和“高可用”的要求;而低成本正好与此相反,我...
2024-04-13 14:40:00
1025
原创 复杂度来源------高可用
软件系统复杂度的第二个来源高可用系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计时的准则之一。 定义中的关键在于“无中断”,因为无论是单个硬件还是单个软件,都不可能做到无中断,硬件会出故障,软件会有 bug;硬件会逐渐老化,软件会越来越复杂和庞大…… 除了硬件和软件本质上无法做到“无中断”,外部环境导致的不可用更加不可避免、...
2024-04-11 17:53:00
972
原创 复杂度来源------高性能
软件系统复杂度的第一个来源高可用 计算机,从电子管计算机到晶体管计算机再到集成电路计算机,运算性能从每秒几次提升到每秒几亿次。但伴随性能越来越高,相应的方法和系统复杂度也是越来越高。现代的计算机 CPU 集成了几亿颗晶体管,逻辑复杂度和制造复杂度相比最初的晶体管计算机,根本不可同日而语。 软件系统中高性能带来的复杂度主要体现在两方面,一方面是单台计算机内部为了高性...
2024-04-10 20:27:00
626
原创 架构设计的目标
架构是为了应对软件系统复杂度而提出的一个解决方案。架构即(重要)决策,是在一个有约束的盒子里去求解或接近最合适的解。这个有约束的盒子是团队经验、成本、资源、进度、业务所处阶段等所编织、掺杂在一起的综合体(人,财,物,时间,事情等)。架构无优劣,但是存在恰当的架构用在合适的软件系统中,而这些就是决策的结果。 架构设计的主要目的是为了解决软件系统复杂度带来的问题。简...
2024-04-10 20:22:00
320
原创 架构设计的历史背景
每个程序员心中都有一个成为架构师的梦想,梦想是美好的,但道路是曲折的。原本以为学习架构设计就像学习一门编程语言一样,先学习一下基本的语法,再研究一下细节和原理,然后实践一下就能够快速掌握。但真正实践后才发现,架构设计的难度和复杂度要高很多。架构设计的历史背景机器语言(1940 年之前) 最早的软件开发使用的是“机器语言”,直接使用二进制码 0 和 1 来表示机器可...
2024-04-10 19:12:00
677
原创 从 0 开始学架构
大道至简,架构是宏观整体,框架是微观组成。架构是顶层设计,框架是具体实现。一、架构设计的历史背景二、架构设计的目标(解决软件系统复杂度带来的问题)2.1、软件系统复杂度问题来源---高性能2.2、软件系统复杂度问题来源---高可用2.3、软件系统复杂度问题来源---可扩展性2.4、软件系统复杂度问题来源---低成本、安全、规模三、 架构设计原则3.1、四、架构设计流程...
2024-04-10 18:30:00
137
原创 Tomcat 与 Nginx,Apache的区别
Apache指的应该是Apache软件基金会下的一个项目—— Apache HTTP Server Project Nginx同样也是一款开源的HTTP服务器软件(当然它也可以作为邮件代理服务器、通用的TCP代理服务器)。 Tomcat是Apache基金会下的另外一个项目,与Apache HTTP Server相比,Tomcat能够动态的生成资源并返回到客户端。Apache ...
2023-04-03 19:44:00
283
原创 图解 HTTP 常见问题
一.HTTP 基本概念HTTP 是什么?描述一下HTTP 是超文本传输协议,也就是HyperText Transfer Protocol。能否详细解释「超文本传输协议」?HTTP的名字「超文本协议传输」,它可以拆成三个部分:超文本传输协议1. 「协议」在生活中,我们也能随处可见「协议」,例如:刚毕业时会签一个「三方协议」;找房子时会签一个「租房协议」;生活中的协议,本质上与计算机中的协议是...
2021-05-12 15:41:00
343
原创 TCP/IP 协议
一、 计算机网络体系结构分层不难看出,TCP/IP 与 OSI 在分层模块上稍有区别。OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。二、 TCP/IP 基础1. TCP/IP 的具体含义从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很...
2021-05-12 14:43:00
290
原创 Redis 面试题收集整理2
说说Redis基本数据类型有哪些吧字符串:redis没有直接使用C语言传统的字符串表示,而是自己实现的叫做简单动态字符串SDS的抽象类型。C语言的字符串不记录自身的长度信息,而SDS则保存了长度信息,这样将获取字符串长度的时间由O(N)降低到了O(1),同时可以避免缓冲区溢出和减少修改字符串长度时所需的内存重分配次数。链表linkedlist:redis链表是一个双向无环链表结构,很多发布订阅...
2021-05-12 12:01:00
109
原创 CentOS7 安装 NGINX
安装所需环境Nginx 是 C语言 开发,建议在 Linux 上运行,当然,也可以安装 Windows 版本,一. gcc 安装安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: 1 yum install gcc-c++二. PCRE pcre-devel 安装PCRE(Perl Compatible Regular Expres...
2021-03-03 14:08:00
180
1
原创 略谈 DevOps
DevOps 简史 IT 行业的当前状态受技术进步在整个历史中所产生的连锁效应所影响。不时出现的新技术极大地改变了世界运转的方式。最近,技术进步似乎开始以惊人的速度出现。自从互联网出现以来,信息的传播和新技术的发展速度一直在增加。 云计算预示着技术的又一次转变,随着新技术的发现,该技术将继续影响企业的运营方式。区块链是新技术的又一个例子,它具有巨大的潜力,可以颠覆许多...
2020-10-31 09:39:00
760
1
原创 K8S 的由来及 Kubernetes
什么是Kubernetes?Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。使用Kubernetes可以:自动化容器的部署和复制随时扩展或收缩容器规模将容器组织成组,并且提供容器间的负载均衡很容易地升级应用程序容器的新版本节省资源,优化硬件资源的使用提供容器弹性,如果容器失效就替换它,等等...Kubernetes特点便携性...
2020-10-28 13:50:00
352
1
原创 Docker
什么是Docker Docker 最初是dotCloud公司创始人Solomon Hykes在法国期间发起的一个公司内部项目,它是基于dotCloud公司多年云服务技术的一次革新,并与2013年3月以Apache 2.0授权协议开源),主要项目代码在GitHub上进行维护。Docker项目后来还加入了Linux基金会,并成立推动开放容器联盟。 Docker 自...
2020-10-27 14:46:00
178
原创 Linux-GitLab安装及汉化
安装步骤:(1)安装软件1> 安装依赖 1 [root@centos7-test packages]# yum install -y curl policycoreutils-python openssh-server2>下载软件包 1 [root@centos7-test packages]# wget https://mirrors.tuna.tsinghua.ed...
2020-10-27 11:25:00
169
原创 vim &基础设置
设置centOS7的vim编辑器1.检查是否已安装查看一下你本机已经存在的包,确认一下你的VIM是否已经安装,输入:[root@centos7-1804 ~]# rpm -qa|grep vim2.安装[root@centos7-1804 ~]# yum -y install vim* // 执行命令后会自动安装,完毕后就可以使用vim编辑器了。3.配置安装完成后开始配置vim[root@centos7-1804 ~]# vim /etc/vimrc打开文件后,按 i 进入编辑
2020-10-21 10:13:38
195
原创 Linux-进程管理&网络管理
关于进程 什么是进程? 进程的生命周期? 进程状态 什么是进程? 进程是已启动的可执行程序的运行实例,进程有以下组成部分: • 已分配内存的地址空间; • 安全属性,包括所有权凭据和特权; • 程序代码的一个或多个执行线程; • 进程状态 程序: 二进制文件,静态 /bin/date,...
2020-10-21 09:46:00
161
原创 MySQL架构备份之双机热备
M--S架构:实现双机热备(AB复制) 1、可以降低master读压力 2、可以对数据库做“热备”,热备只能解决硬件master硬件故障,软件故障等重大故障问题,但无法解决人为误操作导致的逻辑故障(列如输入错误的SQL语句把重要的记录删除了),所以常规的备份是必须。环境准备及要求: 1、关闭防火墙和selinux 2、hosts文件中两台服务器主机名和ip地址一一...
2020-09-29 13:43:00
139
原创 Linux目录结构&文件管理
Windows: 以多根的方式组织文件 C:\ D:\ E:\Linux: 以单根的方式组织文件 //目录结构: FSH (Filesystem Hierarchy Standard) 1 [root@admin ~]# ls / 2 bin dev lib media net root srv usr 3 boot etc ...
2020-09-14 20:06:00
105
原创 markdown文件即 .md 的基本常用编写语法
现在项目基本上都用上了构建工具,那就难免要写一些readme等等的说明性文件,但是这样的文件一般都是.md的文件,编写的语法自然跟文本文件有所区别,置于为什么要用这种格式的文件,不要问我,我也不知道,大家都这么用,跟着用就对了,本文也是我学习写markdown文件的一个笔记吧,仅供参考正文:1、标题的几种写法:第一种:前面带#号,后面带文字,分别表示h1-h6,上图可以看出,只到h6,而...
2020-09-02 16:19:00
122
原创 Java 面试题(收集整理...ing)
Java 基础Java 集合Java 并发 && 多线程JVM 篇mybatisSpring 相关spring cloudNetty/tomcatdubbo框架算法分布式归类: 面试题收集整理
2020-08-11 11:58:00
78
原创 CentOS7 VS CentOS8
centos7 与 centos 8 的大概比较CentOS 8 特性详细信息CentOS 8 和 RedHat Enterprise Linux 8 发行的版本是一致的,都是基于 Fedora 28 和 内核 4.18.支持传统的、新兴的工作负载的工具,为用户提供了稳定的、安全的、一致的基础、跨混合云部署。CentOS 完全遵守 Red Hat 的再发行政策,并且致力与上游产品在功能上...
2020-08-10 16:35:00
695
原创 vi/vim 命令整理
Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是自由软件。Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。1999 年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。但在2000年2月Vim赢得了Slashdot Beanie的最佳开放源代码文本编辑器大奖,又将Em...
2020-08-08 15:57:00
136
原创 关于数据库的使用规范(摘抄整理)
一.数据库环境: 1.开发环境(dev) 开发可读写,可修改表结构。开发人员可以修改表结构,可以随意修改其中的数据但是需要保证不影响其他开发同事。 2. 测试环境(test) 开发可读写,开发人员可以通过工具修改表结构。 3.线上环境(production) 开发人员不允许直接在生产环境进行数据库操作,如果需要操作必须找DBA进行...
2020-08-08 13:59:00
983
原创 基于docker 搭建Prometheus+Grafana
一、介绍Prometheus Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境比如VM或者Do...
2020-04-20 23:28:00
106
原创 Ansible
Ansible--快速入门Ansible是一款简单的运维自动化工具,只需要使用ssh协议连接就可以来进行系统管理,自动化执行命令,部署等任务。Ansible的特点 ☆ 基于Python开发,运维工程师对其二次开发比较容易; ☆丰富的内置模块,几乎可以满足一切要求; ☆管理模式简单,一条命令可以影响上千台主机; ☆无需客户端,轻量级,底层通过SSH通信; ☆管...
2020-04-15 14:09:00
110
原创 Ansible Module
Ansible Ad-hoc模式常用模块ansible-doc 常用命令 1 # ansible-doc -h 2 Usage: ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin] 3 4 -j 以json格式显示所有模块信息 5 -l 列出所有的模块 6 -s 查看模块常用...
2020-04-15 14:05:00
56
原创 基于CentOS 7 weblogic 12c 的安装
安装jdk注意weblogic版本及其支持的jdk版本; 卸载OpenJDK,用命令rpm -qa|grep java 和 rpm -qa|grep jdk 显示所有jdk有关的安装包,然后用命令rpm -e --nodeps filename 将文件都删除 1 rpm -qa|grep java 2 rpm -e --nodeps java-1.7.0-openjdk-1.7.0...
2020-04-08 22:03:00
125
原创 面试题收集整理
MySQL 不怕你不会,就怕你不学mysql数据库练习题(含答案)TCP三次握手和四次挥手过程软件工程师必须要掌握的linux命令浅谈python web三大框架经典的Python爬虫和网络编程面试题Redis缓存Redis面试50题面试前必须要知道的21道Redis面试题中高级测试工程师面试题软件测试面试中90%会遇到的问...
2020-04-08 20:53:00
58
原创 自动化运维及服务相关
NginxDockerDocker 安装kubernetes(k8s)基于docker环境搭建kafka集群(单机版)基于 Docker 安装 zabbixweblogic 详解基于CentOS 7 weblogic 12c 的安装Ansible 快速入门使用Ansible Ad-hoc模式下常用模块基于docker 搭建Pro...
2020-04-08 18:11:00
62
原创 基于docker环境搭建kafka集群(单机版)
1.Docker下查看是否有kafka的镜像 1 docker images |grep kafka2.拉取kafka镜像(如果没有kafka的镜像)2.1.拉取zookeeper镜像 在Linux下查看是否有zookeeper的镜像 1 docker images | grep zookeeper 如果没有 zookeeper...
2020-04-03 14:50:00
129
原创 基于 Docker 安装 zabbix
docker+zabbix,使用docker搭建zabbix服务Zabbix 介绍 zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 Zabbix 作为企业级分布式监控系统,具有很多优...
2020-04-03 11:19:00
644
原创 Docker 安装
一,Docker简介百科说:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。看起来有点雾,用过虚拟机的应该对虚拟化技术有点印象,不知道也没关系,就把它当成轻量级的虚拟机吧(虽然一个是完全虚拟化,一个是操作系统层虚拟化),这个解释到位...
2020-04-03 10:27:00
146
原创 weblogic详解
一、简介WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。 WebLogic是美商oracl...
2020-03-17 15:48:00
220
原创 Java 入门之数组
一. 数组定义和访问1.1 容器概述 案例分析:现在需要统计某公司员工的工资情况,例如计算平均工资、找到最高工资等。假设该公司有50名员工,用前面所学的知识,程序首先需要声明50个变量来分别记住每位员工的资,然后在进行操作,这样做会显得很麻烦,而且错误率也会很高。因此我们可以使用容器进行操作。将所有的数据全部存储到一个容器中,统一操作。 容器概念...
2020-03-10 12:01:00
122
原创 vue 学习
ECMAScript 6 入门node.js的简单介绍webpack打包工具的使用cli脚手架(框架)vue 项目实战vue 如何新建一个项目(可视化创建项目)
2020-02-29 14:56:00
42
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人