前言
没有设计的思想,就不能成为一名架构师,架构师是一个能写的一手好代码,画得出一个漂亮的UML原型,写的了一篇技术文档,更加能解决好项目关键技术的综合人才。架构师=前端工程师+后端程序员+系统分析员+关键技术解决+各种技术搭配+设计模式+部署调优+其他。在项目上起到连接管理与项目成员的重要角色。因此,在通往大神级的架构师的道路上,需要懂需求,设计,代码,部署,架构,服务器,运维,调优等。
一个能担负起企业级应用的架构师,脑海里常出现的词会是这些:负载均衡,集群,分布式,高并发,高可用,易管理等等,简单来说需要以下知识技能:
数据层
重点在在于集群方案的选择,比如MySQL集群,集群方案很多,需要选择符合业务的方案,比如多主,主备,读写分离等等,是否还需要做高可用,使用lvs,还是zookeeper,是否需要例如mycat类中间件来管理数据库或者做数据分片等等
服务层
选择dubbo,微服务让团队开发耦合度没有那么高,各自关心各自的模块,都以服务方式发布出去。传统一点用springmvc+restful。对于并发不高的系统,没有必要做dubbo。缓存的选择,涉及到文件缓存,数据库缓存,可以用memcached,ehcache,redis。
应用层
框架太多,ssh,ssm,jfinal等等,选择合适项目团队的框架;UI界面,H5很美观,但对于浏览器的兼容就把开发人员搞哭了,可以选择成熟的ext或者esayui。
网络层
部署
是否需要用docker来部署,开源docker容器让部署轻量化,很容易就可以扩展一个节点,对于高并发,伸缩性要求高的场景可以使用。docker的出现,完全可以实现一键部署。是否需要负载均衡,可以选择硬均衡,也可以用软均衡(nginx)。软均衡时需要考虑session复制,复杂一点选择lvs+haproxy。打包发布,熟练使用maven,能建立自己的maven私服,能指导项目成员使用maven打包发布。
安全
大多数安全在网络层就解决了,但应用的安全不容忽视,比如需要考虑SQL注入,授权认证,这些目前框架都能解决,重点的安全问题来自框架本身,大多数应用选择框架都是开源的。如果团队没有能力修复漏洞只能等更新。
其他方面
测试(自动化测试),版本管理(git svn),大数据,人工智能等
结语
深度方面,注重设计思想和模式;广度方面,对于前言技术,要不懈的追求和钻研,这样才能在未来技术架构选型上作出合理的抉择