JAVA开发与架构(一个JAVA架构师的必备技能和素养)

最近领导有问,你们眼中的JAVA架构师当如何?特此在这篇博文中回复。

架构一词的解析:软件架构来源于软件工程,而软件工程的思想来源于建筑工程。所以架构一词其实也是来源于建筑学。从建筑学中我们很容易理解架构。在建筑学中,我们很容易理解,架构是指在房屋建筑中,由各种构件(屋架、梁、板、柱等)组成的能够承受各种作用的体系。既包括基本承重架构,功能架构,也包括美观架构,防震架构,绿色环保设计架构等等。其实放到软件设计架构方面也是一样。针对JAVA领域的架构,目前已经演化为:基础架构、业务架构、技术架构、数据架构、部署架构和绿色架构这几个分支。其实按照专才来分的话,一个架构师只要精深一种架构就行。但是我们往往需要架构师具有综合的技能和素养。所以我们全部都要具备。按照目前深圳的市人才市场价精深一种架构的架构师市场价值在40W到50W每年。如果上面几种都精深可达80W到120W每年。

基础架构:
基础架构包括这个系统的自研的中间件,包括缓存自研架构,tomcat自研架构,数据库连接架构,网关架构,部署工具等这些系统的基本构件,需要基于开源系统还是从无到有,结合公司实际项目做到最优化。

业务架构:
业务架构就是产品经理提出的业务需求,架构师可以根据需求来对业务架构进行服务划分,可以无限横向扩展。比如用户管理。客服中心。商品中心,支付中心,物流中心,异业合作等等与业务相关的功能架构和打破系统壁垒和数据壁垒对系统进行系统升级,数据融合。这是系统对客的门面,不管是TO B的还是 TO C的。

技术架构:

技术架构包括这个系统的登录,安全,互联网合规,防网络攻击,用户权限,用户日志,全文检索,扫一扫,架构本身的服务注册发现,路由(网关),配置中心,工具类等基础功能。这是对系统架构进行技术选型。

数据架构:
数据架构包括使用的二维数据库,缓存数据库,消息队列,全文检索数据库,数据备份,数据扩展策略,数据中台,数据集市,数据分析。这是系统的动脉血液。其中数据架构和基础架构和业务架构都是紧密配合的,比如缓存的使用,全文检索数据库,数据分析。

部署架构:
部署架构包括系统的部署方式,涉及到云平台,系统监控,系统日志,系统告警,系统扩容,系统健康检测,系统流量分析等内容。

绿色架构:

绿色架构是根据计算机学会提倡绿色计算提出的概念。因为我们在研发的过程中必然会产生资源消耗,一个好的系统一定是刚刚好的。不是用大炮来打蚊子,也不是系统也厉害越好,不是什么计算都放在银河计算机那么先进的计算机上计算。所以在做架构时怎么规划使用多少服务器,使用多大的网络流量,购买多少第三方服务,系统的紧缩和扩容等等这是绿色架构需要考虑的问题。

关于基础架构:

java基础和javaweb基础技能:

Java基础

多线程:创建与使用、线程同步与锁、线程池等的掌握

JVM:你只有深入理解虚拟机的内存回收机制,才能正确使用JVM性能调优

掌握NIO,以及对应NIO框架Netty

Java并发包(java.util.concurrent)下的工具包:AtomicInteger等原子操作类,基于AQS锁:

ReentrantLock

Semaphore

CountDownLatch

ReentrantReadWriteLock

SynchronousQueue

FutureTask

数据结构与算法

常见的数据结构:数组、链表、堆与栈、哈希表等

算法思想:递推、穷举、贪心等

经典排序算法:排序、查找

常用的设计模式

创建型:工厂方法、抽象工厂、单例模式

结构型:装饰模式、外观模式、组合模式

行为模式:策略模式、观察者模式

软件设计原则:接口隔离、单一职责等原则

开发框架

分库分表框架:tddl、cobar、mycat的选型与使用

服务化:Dubbo、gRPC、Spring Cloud、Spring Cloud alibaba(阿里基于Spring Cloud开源实现,微服务架构推荐使用)

负载均衡:LVS、Nginx、HAProxy

缓存:Redis、Memcached

搜索与数据分析:Elasticsearch、ELK

消息队列:RabbitMQ、Kafka、RocketMQ

容器:docker、k8s

分布式注册中心:zookeeper、nacos(阿里开源推荐使用)、ETCD、Consul

高性能NIO网络通信框架 Netty

数据存储

MySQL数据库更多是需要掌握事务、锁、索引、性能优化,以及如何配合NoSQL(mongodb\redis)选型使用。

分布式数据库的存储、查询

分布式事务

分布式全局ID设计

常用构建工具

Maven/gradle 管理项目的构建、打包、测试、发布

git/svn 源码版本管理

Nexus 类库私服管理

Jenkins 自动化部署工具

SonarQube 代码质量检查工具

分布式架构

分布式锁

分布式数据存储,全局唯一ID实现

分布式架构的数据一性性、可用性、容错易用性(CAP),在CAP中只能满足CP或AP原则的理解及实施;

海量数据迁移技术;

服务熔断、限流、降级

服务发现与治理

服务的负载

服务的网关

服务的安全

Linux常用功能

find、grep、ps、cp、move、tar、head、tail、netstat、lsof、tree、wget、curl、ping、ssh、echo、free、top

性能调优

JVM性能调优

Mysql性能调优

Tomcat性能调优

Nginx 性能调优

redis 性能调优

elasticsearch 性能调优

网络安全

XSS

XSS的防御

CSRF

注入攻击

SQL注入

XML注入

CRLF注入

文件上传漏洞

加密与解密

对称加密

非对称加密

哈希算法

加盐哈希算法

加密算法(MD5,SHA1、DES、AES、RSA、DSA)

彩虹表

DDOS攻击

DOS攻击

memcached为什么可以导致DDos攻击

什么是反射型DDoS

如何通过Hash碰撞进行DOS攻击

SSL、TLS,HTTPS

脱库、洗库、撞库

 

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋力向前123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值