在软件开发行业扑腾了***年了,多少积累或者了解了一些技术,整理所以一下,与诸位共享,欢迎各位补充,评论!
数据层
数据层主要作用是存储数据,大概分为两类,一类是关系型数据库,一类是非关系型数据库;
【关系型数据库】mysql & oracle & sqlserver
mysql数据库目前在互联网行业中应用最多,主要原因是免费,*态圈好,用的人多,资料多,遇见问题能够在网上找到很多资料。
mysql的局限性在于存储的数据量相对较小(与oracle相比),当表中记录到千万级别时,性能下降很快,不过在高手如林的IT行业,很多牛人研发出了相应问题的解决方案,如分表、分库,同时有很多与之相关的高可用方案,如mycat、Haprox、MHA;
oracle数据库,目前应用也比较多,但由于收费的原因,失去了很多用户,当然在数据量不大的情况下,也不会有人找你收费,当向你收费的时候,恭喜你,相信业务已经达到一定规模了。
SqlServer数据库,在互联网行业应用较少,一些传统行业应用较多,关于对SqlServer的了解 还是停留在大学的时候水平,不多介绍,不过在传统行业如:数字矿山,地理信息系统,CAD辅助制图等还有一定应用。
【非关系型数据库(NoSQL数据库)】memcache & redis & mongoDb & Hbase
非关系型数据库的有点在于数据结构灵活,使用方便。但功能相对于关系型数据库较为简单,尤其在事务管理,一致性保证,锁等方面。
memcache是一种高性能,分布式内存对象缓存系统。优点在于高性能以及分布式的实现及其方便,但在数据结构上较为单一,并且不能持久化。关于memcache的使用 会在以后的文章中做详细介绍。
redis 一种比较典型的NoSQL数据库,具备丰富的数据类型与高效的存取速度,基于redis可以实现分布式消息队列,分布式锁等诸多功能。redis不仅可以做缓存,而且具备持久化功能,即便机器宕机后,数据也不会丢失。
mongoDb一种很高效的数据库,一般用来存储数据量较大的非结构化数据,如博客、文档、网页等。存取速度优于mysql,但在事务性和锁等方面特性较弱。目前很火的一种数据库。
Hbase 一种大数据领域的数据库,了解不多。欢迎各位补充其特性… …
消息中间价
kafka & Active Messenger
消息中间件一般用于各个模块、系统之间的异步通信,降低各个模块之间的耦合性。详细介绍后续所以… …
分布式技术
LVS+Keepalive & nginx & zookeeper
LVS的全称是linux virsual server,keepalive用于检测各个机器是否存活。这种分布式比较简单,不需要太多的开发工作,局限性在于一般只能用于无状态服务中。
nginx一种很常用的反向代理服务器,具有丰富的负载均衡策略,简单易用。
zookeeper 分布式服务的管理者,在hadoop、kafka、分布式框架中几乎都有所应用。
RPC框架
thrift & dubbo
分布式通信框架主要是使服务的远程调用跟调用本地化方法一样简单。
thrift支持跨语言调用,定义了IDL语言,支持多种通信方式。使用方便,几乎是所有RPC框架中通信效率最高的。
dubbo是阿里开发的一套分布式RPC框架,官方文档不错,建议大家阅读,虽然目前阿里有抛弃的趋势,但仍有很多企业在用,学其精髓还是很值得的。
常用框架
spring & struts & hibernate & mybatis
spring 一个庞大的框架家族,几乎无人不知;目前比较火的 springBoot springcloud
struts 一个完善的MVC框架,逐渐有被SpringMVC取代的意思
hibernate 一个完全面向对象的ORM框架,个人认为并不灵活
mybatis 一个半自动化的ORM框架
高性能通信
NIO & netty
常用库
guava & fastJson & druid
guava 谷歌的一个开源库,功能相当强大,*含基础的字符串处理,常用容器*的扩展,缓存,多线程通信等,java开发的利器。
fastJson 阿里开源的JSON处理库,功能丰富,易用。
druid 阿里开源的数据库连接池,性能由于其他数据库连接池