十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这个就非常多了,下面我以常见的编程开发软件和数据库管理软件为例,简单介绍几种,感兴趣的朋友可以尝试一下:
公司主营业务:成都做网站、网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出武都免费做网站回馈大家。
01 编程开发软件
这个要看具体编程语言了,不同语言开发工具自然不同,这里以常见的C/C++、Java和Python为例,简单介绍3种比较常用的软件:
这是Windows平台下一个非常专业的集成开发工具,号称宇宙第一IDE环境,不仅仅只是C/C++,常见的C#、VB等编程语言,这个软件都能很好支持,智能补全、代码高亮、语法检查等功能非常不错,除此之外,还支持单元测试、代码重构和分析等高级功能,因此非常适合大型项目开发和维护:
这是一个非常专业智能的Java开发工具,在企业和个人桌面中,有着非常高的使用率和欢迎度,自动补全、语法提示、代码高亮等功能非常不错,除此之外,还支持JUnit、CVS整合、代码重构等高级功能,自带有Maven和Gradle构建工具,因此更适合Java项目开发和维护,个人使用起来非常不错:
这是一个非常专业的Python开发软件,和IntelliJ IDEA一样,Jetbrains公司的产品,在业界非常流行、受欢迎,智能补全、代码高亮、语法提示等功能非常不错,除此之外,还支持代码重构和分析、单元测试等高级功能,因此更适合大型项目,个人使用来说,也非常简单,很容易上手和掌握:
02 数据库管理软件
这个就非常多了,不同数据库都有专门的管理软件和工具,这里简单介绍3个比较通用的数据库管理软件,分别是HeidiSQL、DBeaver和DataGrip,对于日常使用来说,非常不错:
这是Windows平台下一个非常轻巧灵活的数据库管理软件,基于Delphi开发而来,目前支持MySQL、MariaDB、MSSQL、PostgreSQL等主流数据库,常见的建库建表、视图索引、触发器等基本功能,这个软件都能很好兼容,除此之外,还支持SQL脚本导入导出、数据备份恢复等功能,对于日常数据库管理来说,非常不错:
这是一个基于Java开发的数据库管理软件,免费、开源、跨平台,目前支持Oracle、MySQL、PostgreSQL、SQL Server等十几种主流数据库开发,建库建表、视图索引、触发器、存储过程等基本功能 都 可轻松查看和设计,数据库导入导出、数据 恢复 备份等功能也都非常不错,对于日常数据库管理和维护来说,是一个非常不错的工具:
这也是一个通用的数据库管理软件,Jetbrains公司的产品,支持跨平台,但原则上针对个人不免费,常见的PostgreSQL、MySQL、Oracle等数据库,这个软件都能很好支持, 数据导入导出( 恢复备份 )、 智能代码填充、版本 集成 控制等功能非常不错,对于日常数据库管理来说,也是一个不错的工具:
每天常用开发工具:
0.Git:分布式版本控制系统;
1.IntelliJ IDEA:java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一;
2.Sublime Text:不只是代码编辑器;
3.Postman:Http请求模拟工具和功能强大的网页调试工具;
4.DataGrip:支持几乎所有主流的关系数据库、多功能的数据库操作工具;
5.Vagrant:用于创建和部署虚拟化开发环境,配合虚拟机使用;
6.Gradle:自动化构建工具;
7.JIRA:项目与事务跟踪工具;
8.iTerm2:Mac上的终端工具;
9.Jenkins:持续集成工具。
做了一个写代码用了十几年的人,很多编程的习惯已经养成了,现在就罗列下每天必用的软件:
直接安装的linux系统,因为几乎所有的代码都是在linux下完成
java开发环境
C/C++代码编辑工具
linux下虚拟windows系统virtualBox
软件提交工具git
不同的开发语言,每天要用到的软件可能不一样。
我是开发java web的,电脑安装了很多工具,但是说每天要用到的好像就几个。
作为程序员使用最多的软件,莫过于编程开发所用到的软件编辑器,但是编辑器的种类有很多。我们需要做到的是,找到你最喜欢的编辑器然后熟练的使用它。
同时掌握常见的一些快捷键的操作方式,从而来提升我们的工作效率,而不是以软件而论软件,什么都去接触使用。毕竟软件是工具是帮助我们提升开发效率。
下面我就列举我们PHP经常使用的软件
IDE工具类软件
这一类是开发软件编写代码用的。这一类的软件非常多,我就推荐一个经常使用的PHPStorm,因为太多的话大家也用不到,也没有那么多的精力去熟练每一个编辑器。
PHPStorm是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查。可以说是PHP开发程序员必备的神器。
常用快捷键如下:
1.复制快捷方式
F5 复制文件/文件夹
CTRL+C 复制
CTRL+V 粘贴
CTRL+X 剪 切,删除行
CTRL+D 复制行
CTRL+SHIFT+V 可以复制多个文本
2.自动代码
ALT+回车 导入包,自动修正
CTRL+ALT+L 格式化代
码CTRL+ALT+I 自动缩进
CTRL+ALT+O 优化导入的类和包
CTRL+SHIFT+SPACE 切换窗口
CTRL+SPACE空格 代码自动完成,代码提示,一般与输入法冲突
CTRL+ALT+SPACE 类 名或接口名提示(与系统冲突)
CTRL+P 方法参数提示,显示默认参数
CTRL+J 自动代码提示,自动补全
CTRL+ALT+T 把选中的代码放在 TRY{} IF{} ELSE{} 里ALT+INSERT 生成代码(如GET,SET方法,构造函数等)
3.运行
Alt + Shift + F10 选择的配置和运行
Alt + Shift + F9 选择配置和调试
Shift + F10 运行
Shift + F9调试
Ctrl + Shift + F10运行范围内配置编辑器
Ctrl + Shift + X运行命令行
4.其他快捷方式
CTRL+Z 倒退(代码后悔)
CTRL+SHIFT+Z 向前
CTRL+H 显 示类结构图
Ctrl +F12 文件结构弹出
CTRL+O 魔术方法
CTRL+/ 注释//取消注释
CTRL+SHIFT+/ 注释/*...*/
ctrl + '.': 折叠选中的代码的代码
ALT+ / 切换代码视图,标签切换
5.其他快捷方式
CTRL+Z 倒退(代码后悔)
CTRL+SHIFT+Z 向前
CTRL+H 显 示类结构图
Ctrl +F12 文件结构弹出
CTRL+O 魔术方法CTRL+/ 注释//取消注释
CTRL+SHIFT+/ 注释/*...*/
ctrl + '.': 折叠选中的代码的代码
ALT+ / 切换代码视图,
数据库相关常用的工具
Navicat for MySQL是管理数据库的操作工具,都是可以连接远程的云数据库。方便简化开发,还可以手动备份、可视化的sql分析。
常用快捷键:
ctrl+q 打开查询窗口
ctrl+/ 注释sql语句
ctrl+shift +/ 解除注释
ctrl+r 运行查询窗口的sql语句
ctrl+shift+r 只运行选中的sql语句
F6 打开一个mysql命令行窗口
ctrl+d (1):查看表结构详情,包括索引 触发器,存储过程,外键,唯一键;(2):复制一行
ctrl+l 删除一行
ctrl+n 打开一个新的查询窗口
ctrl+w 关闭一个查询窗口
ctrl+tab 多窗口切换
服务器连接软件
XShell6是非常强大的SSH远程终端客户端,帮助我们连接远程的Linux服务器来进行操作。
粘贴:Shift+Insert
历史 命令编辑ctrl + p 返回上一次输入命令字符
alt + 返回上一次执行命令
其它
ctrl + s 锁住终端
ctrl + q 解锁终端
ctrl + l 清屏相当于命令clear
Tab键,快速补全命令
轻量级文本编辑器
Notepad++。这个很轻量,打开一下文本非常的方便。
常用快捷键
Ctrl+C 复制
Ctrl+X 剪切
Ctrl+V 粘贴
Ctrl+Z 撤消
Ctrl+Y 恢复
Ctrl+A 全选
Ctrl+F 键查找对话框启动
Ctrl+H 查找/替换对话框
Ctrl+D 复制并粘贴当行
Ctrl+F2 切换书签
F2 转到下一个书签Shift+F2 转到上一个书签
F11 全屏模式
综上所述,软件只是一个工具,我们需要找到自己喜欢使用的,然后熟练一些常用的快捷方式即可,而并不是在于数量多。
前端 :
visual studio code
后端:
pycharm
IDEA
安卓:
android studio
浏览器:
谷歌
火狐
数据库管理:
navicat
远端链接:
fileZilla
xshell
electerm(mac上使用)
流程图设计:
xmind
processOn
笔记:
为知笔记(付费一年60)
有道云笔记
虚拟机(容器)
VMware Fusion(mac上)
docker
其他:
postman
jmeter
作为一个12年开发经验的前端程序员,我来聊聊每天必用的几个软件。
写代码自然离不开 编辑器 。目前我主要使用的是微软的 Visual Studio Code 。VS Code比较轻量,功能足够应付日常开发所需,跨平台,而且完全免费 。因为之前长期使用Visual Studio在Windows平台上做开发,后来技术栈变化,经常需要在Linux和MacOS上做开发,VS Code就成了我顺理成章的选择。后来干脆在Windows上也用VS Code了。目前整个团队都已经被VS Code圈粉了。其它类似的如Sublime Text(需要付费)和Atom也有不少人使用。
因为是团队开发, 源代码管理工具 自然必不可少,而 git 是目前最热门的一个。我们公司也不例外,几年前从Perforce迁移到了 GitHub企业版 (和公众版本UI完全相同)。平时的代码审查也都是在GitHub企业版上完成的,不再使用单独的代码审查工具。有些不习惯使用命令行方式的同事使用 SourceTree 完成日常的代码分支管理和提交,而我则比较热衷于命令行方式。VS Code也提供了比较完善的git集成,但因为习惯的原因,除了直观比较不同代码版本的差异,我一般也不用VS Code执行git操作。
作为一个Web前端, 浏览器及前端调试工具 自然不可或缺, Google Chrome + Developer Tools (F12) 自然是首选。使用Developer Tools,可以对JavaScript进行调试,监控HTTP请求/响应,分析CSS计算问题和JS性能问题。 Chrome下还有很多功能强大的插件,个人比较常用的包括React Developer Tools、PostMan、Proxy SwitchOmega和AdBlock。当然,因为经常面对浏览器兼容性问题,Firefox、IE、Edge、Apple Safari以及各自的Developer Tools都是免不了要用的。
团队目前使用Scrum模型,自然需要一个做 任务规划和质量管理 的工具。我们采用了 JIRA , 每天的站会(daily standup meeting)都会对scrum看板(board)进行更新。
遇到技术问题,自然免不了要上网查找资料。 Google 的使用频率非常高(需要科学上网)。大部分问题都能在 StackOveflow 上找到线索,但有时候也不得不跑到大名鼎鼎的同性交友网站 GitHub 上看源码。 MDN (Mozilla Developer Network)对于前端开发也是不可或缺(此处鄙视一下w3cschool,上面到处是错误知识)。
其它如node.js/npm、docker等,因为和具体的技术栈相关,就不具体展开讲了。
作为一个开发人员,你每天使用什么软件呢,欢迎说说看。
尽管我是后端出身的,不过也经常写前端代码,甚至还用C#/C++参与过一些客户端开发,自认为也算是一个Web全栈工程师。随着前端技术的不断进步,现在的前端已经不再是写写页面这么简单了,很多逻辑在前端就写了,我建议每一个出色的开发者应该尽可能对前后端都能有不错的掌握。
今天给大家推荐一些我认为前端和后端开发都需要经常用到的一些软件,这里面包括了查询资料工具、原型工具、文本编辑器、版本管理工具。
原型工具
不管前端还是后端,尤其是前端程序员,在跟产品经历沟通之后肯定会要查看原型的,方便自己在开发过程中使用,基本上大公司输出的原型都比较规范,除非你遇到张小龙这种级别的大神,哥们儿直接盯着你做了。
目前主流的原型工具主要有Axure、MockPlus、墨刀等,其中Axure依然是应用最为广泛的原型工具,大多数开发者也都应该用来看原型。
文本编辑器
不管是前端还是后端程序员,当然前端程序员就不说了,在WebStorm出现之前,没有一款真正可以叫做IDE的前端开发工具,那么基本上文本编辑器就是前端程序员最重要的编程工具。同样后端程序员即使不需要写前端代码,文本编辑器也是必备的,您不需要每次看代码都打开庞大的集成开发环境,像IDEA这种比较耗费资源的,平时查看代码啥的完全没有必要,何况你还经常要看一些前端代码。
当然你比较习惯Linux/Unix下开发,Emacs/Vim可能是你用得比较多的文本编辑器,还有UltraEdit、Sublime Text、EditPlus、Atom这些老牌的文本编辑器,不过现在我觉得每个程序员都应该下载一个Visual Studio Code,支持的语言比较多,而且插件非常丰富,是微软官方支持的开发者工具,开源免费而且颜值非常高。
查询资料、版本管理工具
不用多说,每个程序员都要学会很好的使用Google、Stack Overflow两个工具,可以说你日常开发当中可能遇到的问题,通过这两个工具你全都能找到解决方案。
另外一个是Dash文档管理工具,Dash是一个非常好的开发者帮助文档工具,这个工具的好处是给所有的开发文档做了一个整合,C/C++、Java、PHP、Python、Latex、Emacs Lisp、Haskell、JavaScript、Go语言等文档都能够在这个工具当中下载使用。
最后一个就是版本管理了,SVN和Git依然是目前使用最为广泛的版本管理工具,不过就使用来说我还是推荐Git版本控制系统,可以说这个时代Git就是最好的版本管理工具了,尤其是开源时代、互联网时代,Git已经成为了最重要的版本管理工具,不管是命令行管理还是使用Github等客户端工具,堪称完美。
入行十一年,现在主要做一些管理和架构方面的工作,也会做一些Coding,主要是一些新技术的研究和“踩坑”。
编辑器
首先是EditPlus,这是一个文本编辑器。最常用的两个功能:正则表达式查询和文件夹内所有文件内容搜索。
平时经常需要看一些系统日志,甚至要从好几天几十个日志文件中找到内容,这个软件很好用。(原谅我们没有上日志平台)
然后就是IDE啦,我还是喜欢用Eclipse,有时候会用STS(Spring Tool Suite),它也是一个被包装过的Eclipse,方便做一些Spring框架的研究。
数据库工具
一个是DbVisualizer,凡是具有JDBC数据库接口的数据库都可以管理,什么数据库都能连。
还有一个是SQLyog,这是一个快速而简洁的图形化管理MYSQL数据库的工具,我只用里面一个功能,就是数据的导入导出,效率非常高!
接口测试工具
大部分项目只对外提供接口服务,所以接口测试工具少不了,我一般使用SoapUI,WebService/Rest都可以进行测试。
其他
每天肯定会用的肯定不止上面几个,还有版本控制工具svn和git,都会用到是因为单位svn现在开始往git迁移。
因为用的Scrum敏捷开发流程,所以JIRA、Sonar、Fisheye这些也是都会用到的。
Maven也不用说了,几个项目基本都是基于Maven构建的。
必用的基本就是这些,只要电脑开着,这几个软件基本都是打开状态。
第一种:LiteIDE
LiteIDE是一个简单的开源IDE,值得注意的是,它是GO语言2012年正式版发布的首个IDE,由Qt开发,它看起来类似于Visual Studio等其他编译器。
由于它是为golang设计的,LiteIDE为开发人员提供了许多有用的功能,包括可配置的构建命令,高级代码编辑器和广泛的golang支持。其他功能包括代码管理、gdb、Delve调试器、自动完成和使用WordApi的主题,基于MIME类型的系统等。
第二种:VS Code
它是微软开发的广受欢迎的开源IDE,有一个开箱即用的go扩展可供VS Code使用。VS Code插件为开发人员提供了很多功能,包括与许多go工具集成。
VS Code通过IntelliSense,内置git集成,直接从编译器调试代码等功能提供智能完成功能;VS Code具有高度可扩展性,并通过其许多扩展提供了许多自定义选项,还提供了几十种语言的支持,成为受开发者欢迎的工具。
第三种:Atom
开发人员可以利用这个Atom IDE改进的语言集成与更智能的编辑器。开源的go-plus软件包使开发人员更容易在GO中进行编程。
Atom和go-plus软件包为golang提供工具,构建流程,linters、vet和coverage工具的支持;其他功能包括自动完成、格式化、测试和文档。
第四种:Vim
Vim有许多插件可以帮助开发人员更轻松地编辑他们的GO代码;Vim-go插件自动安装所有必要的东西,为Vim中的GO开发人员提供更平滑的集成。
Vim-go具有许多有用的功能,包括编译器,改进的语法高亮和折叠,完成支持以及一系列具有集成支持的调试程序。还有一些使用的高级源分析工具,包括GoImplements、GoCallees和GoReferrers。
1. 介绍
最近在研究一些消息中间件,常用的MQ如RabbitMQ,ActiveMQ,Kafka等。NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,由bitly公司开源出来的一款简单易用的消息中间件。
官方和第三方还为NSQ开发了众多客户端功能库,如官方提供的基于HTTP的nsqd、Go客户端go-nsq、Python客户端pynsq、基于Node.js的JavaScript客户端nsqjs、异步C客户端libnsq、Java客户端nsq-java以及基于各种语言的众多第三方客户端功能库。
1.1 Features
1). Distributed
NSQ提供了分布式的,去中心化,且没有单点故障的拓扑结构,稳定的消息传输发布保障,能够具有高容错和HA(高可用)特性。
2). Scalable易于扩展
NSQ支持水平扩展,没有中心化的brokers。内置的发现服务简化了在集群中增加节点。同时支持pub-sub和load-balanced 的消息分发。
3). Ops Friendly
NSQ非常容易配置和部署,生来就绑定了一个管理界面。二进制包没有运行时依赖。官方有Docker image。
4.Integrated高度集成
官方的 Go 和 Python库都有提供。而且为大多数语言提供了库。
1.2 组件
1.3 拓扑结构
NSQ推荐通过他们相应的nsqd实例使用协同定位发布者,这意味着即使面对网络分区,消息也会被保存在本地,直到它们被一个消费者读取。更重要的是,发布者不必去发现其他的nsqd节点,他们总是可以向本地实例发布消息。
NSQ
首先,一个发布者向它的本地nsqd发送消息,要做到这点,首先要先打开一个连接,然后发送一个包含topic和消息主体的发布命令,在这种情况下,我们将消息发布到事件topic上以分散到我们不同的worker中。
事件topic会复制这些消息并且在每一个连接topic的channel上进行排队,在我们的案例中,有三个channel,它们其中之一作为档案channel。消费者会获取这些消息并且上传到S3。
nsqd
每个channel的消息都会进行排队,直到一个worker把他们消费,如果此队列超出了内存限制,消息将会被写入到磁盘中。Nsqd节点首先会向nsqlookup广播他们的位置信息,一旦它们注册成功,worker将会从nsqlookup服务器节点上发现所有包含事件topic的nsqd节点。
nsqlookupd
2. Internals
2.1 消息传递担保
1)客户表示已经准备好接收消息
2)NSQ 发送一条消息,并暂时将数据存储在本地(在 re-queue 或 timeout)
3)客户端回复 FIN(结束)或 REQ(重新排队)分别指示成功或失败。如果客户端没有回复, NSQ 会在设定的时间超时,自动重新排队消息
这确保了消息丢失唯一可能的情况是不正常结束 nsqd 进程。在这种情况下,这是在内存中的任何信息(或任何缓冲未刷新到磁盘)都将丢失。
如何防止消息丢失是最重要的,即使是这个意外情况可以得到缓解。一种解决方案是构成冗余 nsqd对(在不同的主机上)接收消息的相同部分的副本。因为你实现的消费者是幂等的,以两倍时间处理这些消息不会对下游造成影响,并使得系统能够承受任何单一节点故障而不会丢失信息。
2.2 简化配置和管理
单个 nsqd 实例被设计成可以同时处理多个数据流。流被称为“话题”和话题有 1 个或多个“通道”。每个通道都接收到一个话题中所有消息的拷贝。在实践中,一个通道映射到下行服务消费一个话题。
在更底的层面,每个 nsqd 有一个与 nsqlookupd 的长期 TCP 连接,定期推动其状态。这个数据被 nsqlookupd 用于给消费者通知 nsqd 地址。对于消费者来说,一个暴露的 HTTP /lookup 接口用于轮询。为话题引入一个新的消费者,只需启动一个配置了 nsqlookup 实例地址的 NSQ 客户端。无需为添加任何新的消费者或生产者更改配置,大大降低了开销和复杂性。
2.3 消除单点故障
NSQ被设计以分布的方式被使用。nsqd 客户端(通过 TCP )连接到指定话题的所有生产者实例。没有中间人,没有消息代理,也没有单点故障。
这种拓扑结构消除单链,聚合,反馈。相反,你的消费者直接访问所有生产者。从技术上讲,哪个客户端连接到哪个 NSQ 不重要,只要有足够的消费者连接到所有生产者,以满足大量的消息,保证所有东西最终将被处理。对于 nsqlookupd,高可用性是通过运行多个实例来实现。他们不直接相互通信和数据被认为是最终一致。消费者轮询所有的配置的 nsqlookupd 实例和合并 response。失败的,无法访问的,或以其他方式故障的节点不会让系统陷于停顿。
2.4 效率
对于数据的协议,通过推送数据到客户端最大限度地提高性能和吞吐量的,而不是等待客户端拉数据。这个概念,称之为 RDY 状态,基本上是客户端流量控制的一种形式。
efficiency
2.5 心跳和超时
组合应用级别的心跳和 RDY 状态,避免头阻塞现象,也可能使心跳无用(即,如果消费者是在后面的处理消息流的接收缓冲区中,操作系统将被填满,堵心跳)为了保证进度,所有的网络 IO 时间上限势必与配置的心跳间隔相关联。这意味着,你可以从字面上拔掉之间的网络连接 nsqd 和消费者,它会检测并正确处理错误。当检测到一个致命错误,客户端连接被强制关闭。在传输中的消息会超时而重新排队等待传递到另一个消费者。最后,错误会被记录并累计到各种内部指标。
2.6 分布式
因为NSQ没有在守护程序之间共享信息,所以它从一开始就是为了分布式操作而生。个别的机器可以随便宕机随便启动而不会影响到系统的其余部分,消息发布者可以在本地发布,即使面对网络分区。
这种“分布式优先”的设计理念意味着NSQ基本上可以永远不断地扩展,需要更高的吞吐量?那就添加更多的nsqd吧。唯一的共享状态就是保存在lookup节点上,甚至它们不需要全局视图,配置某些nsqd注册到某些lookup节点上这是很简单的配置,唯一关键的地方就是消费者可以通过lookup节点获取所有完整的节点集。清晰的故障事件——NSQ在组件内建立了一套明确关于可能导致故障的的故障权衡机制,这对消息传递和恢复都有意义。虽然它们可能不像Kafka系统那样提供严格的保证级别,但NSQ简单的操作使故障情况非常明显。
2.7 no replication
不像其他的队列组件,NSQ并没有提供任何形式的复制和集群,也正是这点让它能够如此简单地运行,但它确实对于一些高保证性高可靠性的消息发布没有足够的保证。我们可以通过降低文件同步的时间来部分避免,只需通过一个标志配置,通过EBS支持我们的队列。但是这样仍然存在一个消息被发布后马上死亡,丢失了有效的写入的情况。
2.8 没有严格的顺序
虽然Kafka由一个有序的日志构成,但NSQ不是。消息可以在任何时间以任何顺序进入队列。在我们使用的案例中,这通常没有关系,因为所有的数据都被加上了时间戳,但它并不适合需要严格顺序的情况。
2.9 无数据重复删除功能
NSQ对于超时系统,它使用了心跳检测机制去测试消费者是否存活还是死亡。很多原因会导致我们的consumer无法完成心跳检测,所以在consumer中必须有一个单独的步骤确保幂等性。
3. 实践安装过程
本文将nsq集群具体的安装过程略去,大家可以自行参考官网,比较简单。这部分介绍下笔者实验的拓扑,以及nsqadmin的相关信息。
3.1 拓扑结构
topology
实验采用3台NSQD服务,2台LOOKUPD服务。
采用官方推荐的拓扑,消息发布的服务和NSQD在一台主机。一共5台机器。
NSQ基本没有配置文件,配置通过命令行指定参数。
主要命令如下:
LOOKUPD命令
NSQD命令
工具类,消费后存储到本地文件。
发布一条消息
3.2 nsqadmin
对Streams的详细信息进行查看,包括NSQD节点,具体的channel,队列中的消息数,连接数等信息。
nsqadmin
channel
列出所有的NSQD节点:
nodes
消息的统计:
msgs
lookup主机的列表:
hosts
4. 总结
NSQ基本核心就是简单性,是一个简单的队列,这意味着它很容易进行故障推理和很容易发现bug。消费者可以自行处理故障事件而不会影响系统剩下的其余部分。
事实上,简单性是我们决定使用NSQ的首要因素,这方便与我们的许多其他软件一起维护,通过引入队列使我们得到了堪称完美的表现,通过队列甚至让我们增加了几个数量级的吞吐量。越来越多的consumer需要一套严格可靠性和顺序性保障,这已经超过了NSQ提供的简单功能。
结合我们的业务系统来看,对于我们所需要传输的发票消息,相对比较敏感,无法容忍某个nsqd宕机,或者磁盘无法使用的情况,该节点堆积的消息无法找回。这是我们没有选择该消息中间件的主要原因。简单性和可靠性似乎并不能完全满足。相比Kafka,ops肩负起更多负责的运营。另一方面,它拥有一个可复制的、有序的日志可以提供给我们更好的服务。但对于其他适合NSQ的consumer,它为我们服务的相当好,我们期待着继续巩固它的坚实的基础。
go语言编译器官网:可以去DELVE官网进行下载。
谷歌资深软件工程师罗布·派克(Rob Pike)表示,“Go让我体验到了从未有过的开发效率。”派克表示,和今天的C++或C一样,Go是一种系统语言。他解释道,“使用它可以进行快速开发,同时它还是一个真正的编译语言,我们之所以现在将其开源,原因是我们认为它已经非常有用和强大。”
撰写风格:
在Go中有几项规定,当不匹配以下规定时编译将会产生错误。
每行程序结束后不需要撰写分号(;)。
大括号({)不能够换行放置。
if判断式和for循环不需要以小括号包覆起来。Go亦有内置gofmt工具,能够自动整理代码多余的空白、变量名称对齐、并将对齐空格转换成Tab。
我喜欢jetbrains系列的IDE+go插件。不过我要说的是这个问题主要看你的观点如何。
说eclipse:
构建方式是使用go install 命令,每一次编译运行都是go install。这样的好处就是如果你有很多的包,下载下来并没有编译,这样每次编译速度是很快的。而且(!)go install 符合go官方的项目结构,官方说过了,一个go的项目应该是以个gopath,包含src,pkg,bin三个主要目录。所以说go install个人认为才是主要的go编译方式。
说eclipse的缺点:
其实eclipse插件的go编译方式,还有目录结构,项目结构,都是非常完美的!!!!真的很完美!可是,他的代码提示,太差件!大括号都不能自动补全,gdb 32bit 64bit兼容问题,eclipseC++ 没有html js插件,需要手动安装,几乎不能开箱即用。不过如果你是开发算法,数据处理,还是推荐eclipse的,毕竟其他都无关紧要。
说jetbrains:
说先说clione肯定不适合,新建项目没有向导,导致改成go项目各种不开心,比如图标对于我来说就无法接受go lib 不是小耗子~这是次要的,重要的是各个文件都是灰色的(没有在cmake中包含的结果),然后说剩下的,phpstorm这个不说了,估计很少有人插件按在这里,webstorm,体验也不是很好,idea?体验很好,可是毕竟比较重,尤其是现在加入了自家的K啥玩意(无意冒犯,没记住单词)~可是话说回来,go跟C系列IDE配合才是最佳,跟java系列一点不搭关系,用idea似乎有点格格不入,但是!idea支持新建项目向导,lib的图标也很清晰,最后还是选择idea吧,期待clion的强大起来!
再说jetbrains系列缺点:
插件的构建方式是go buiild 这个让人很不爽,我们几乎不确定会构建到什么地方去,还要每次设置一下run配置。这个可能无关紧要,毕竟不是什么大的毛病,可是go build不能缓存.a文件,直接构建的结果就是很多第三方包的情况下很慢!所以建议安装包的时候手动install 一下解决这个问题。自带代码格式化,这个格式化跟go 格格不入,总的来说就是蛋疼,心碎,菊花痒。
最后说liteIDE:
轻量级IDE,我可以说是国人GO伟大作品典范,然而默认构建也是go build,项目管理方式不符合go官方标准。代码提示不能自动导入(eclipse也不能),不过如果你的项目是以包为单位的,那么另当别论。一定很不错,毕竟是轻量级专门针对GO的IDE!
说这些,其实还有很大一部分取决于你的项目是用vendor机制管理,还是godeps机制管理依赖关系。go不像java拥有强大的几乎天下一统的maven(无意冒犯,暂不评价其他构建套件)。
go没有官方包仓库。
go没有官方包管理工具。
go没有官方自动化构建套件。
上面三个没有是致命要害。导致民间各种百花齐放。
说说我的项目怎么管理
gpm 一个shell工具(windows下你可以用git的bash,或者cygwin~)
我是严格艳照官方推荐方式管理go项目,一个go项目一个gopath。系统的gopath只是为了安装go命令,我没有配置gobin,意义不大。
项目的依赖跟我的代码包都在src下(非vendor)
vendor用来存放包的特殊依赖,发布项目直接把依赖包发布上去(公网管理则只上传依赖关系文件 godeps文件)
资源文件等都放在src目录同级,编译文件放在bin,引用直接../引用。