✔︎ 开发工具:Intellij IDEA、webstorm
✔︎ 常用的代码部署方式有哪些?
a. ftp上传代码 + java -jar xxx.jar
b. docker抓取jvm
并发:响应时间、吞吐量、并发用户数
提高系统并发能力的方式,方法论上主要有两种:垂直扩展(Scale Up)与水平扩展(Scale Out)。前者垂直扩展可以通过提升单机硬件性能,或者提升单机架构性能,来提高并发性,但单机性能总是有极限的,互联网分布式架构设计高并发终极解决方案还是后者:水平扩展。
互联网分层架构中,各层次水平扩展的实践又有所不同:
(1)反向代理层可以通过“DNS轮询”的方式来进行水平扩展;
(2)站点层可以通过nginx来进行水平扩展;
(3)服务层可以通过服务连接池来进行水平扩展;
(4)数据库可以按照数据范围,或者数据哈希的方式来进行水平扩展;
各层实施水平扩展后,能够通过增加服务器数量的方式来提升系统的性能,做到理论上的性能无限高可用:
常见互联网分布式架构如上,分为:
(1)客户端层:典型调用方是浏览器browser或者手机应用APP
(2)反向代理层:系统入口,反向代理
(3)站点应用层:实现核心应用逻辑,返回html或者json
(4)服务层:如果实现了服务化,就有这一层
(5)数据-缓存层:缓存加速访问存储
(6)数据-数据库层:数据库固化数据存储
整个系统的高可用,又是通过每一层的冗余+自动故障转移来综合实现的。
参考:https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651959728&idx=1&sn=933227840ec8cdc35d3a33ae3fe97ec5&chksm=bd2d046c8a5a8d7a13551124af36bedf68f7a6e31f6f32828678d2adb108b86b7e08c678f22f&scene=21#wechat_redirect缓存:memcached HBase tair Redis LevelDB Cassandra MongoDB
https://blog.csdn.net/Jesse_cool/article/details/76174778memcached:多线程,非阻塞io复用的网络模型;比redis更适合高并发应用场景、数据一致性有保障 (参考https://www.imooc.com/article/23549?block_id=tuijian_wz), 如利用Memcache来存储共享Session数据
redis:单线程的io复用模型,可实现持久化
gc策略
调优实战:http://www.iteye.com/topic/212967
JVM gc参数设置与分析:https://blog.csdn.net/yohoph/article/details/42041729集群、分布式
部署工具:eureka、war、gretty
thymeleaf
简单说, Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 JSP 。类似的框架 freemaker、beetlspring boot
- webflux
mongodb(MongoTemplate、MongoRepository)
mybatis + mysql、druid
elasticsearch:基于Lucene的搜索服务器
微服务架构:
- dubbo
- spring cloud
- eureka
- feign
- Sleuth
- Admin管理监控数据
- Hystrix
- Gateway
- RabbitMQ
vert.x
node.js
Restful (swaggerz自动生成文档)
Kubernetes
docker
性能优化
测试
- 性能测试:jmeter、LoadRunner
- 压力测试
- 负载测试
- 契约测试:pact
数据监控:elk、grafana
- GraphQL
其他:PowerDesigner