分类目录归档:生活

测试评审的一天

测试评审一天  项目进度出问题都这一套

测试说开发对不上需求、
开发说需求不清晰、
开发架构不好用误时间、
组长说需求不明确、
需求说客户这么提、
架构说开发人员水平低 ….

部门经理发了这张图 …

淘宝 TAE2.0(Taobao App Engine)

TAE2.0(Taobao App Engine)是针对移动互联网场景的定制化PaaS云服务,基于阿里云基础设施,采用Docker容器技术封装应用运行环境,并且针对互联网应用提供系统构建、发布、持续集成、运维管理的一站式解决方案,让中小团队也具备轻松服务海量用户的能力。

系统构建能力(Build)

TAE拥有丰富的镜像资源,例如Java、PHP、MySQL、Redis、Zookeeper等镜像;开发者可以利用官方镜像,快速搭建系统,完成在TAE2.0上的架构搭建;若官方镜像无法覆盖架构需求,则开发者可利用自定义镜像轻松搭建系统。

通过镜像创建容器:

图片描述

构建自定义镜像:

图片描述

官方镜像 :TAE提供丰富的官方镜像,供开发者创建各种类型的服务。除了 Java、PHP、Python三种Web服务器镜像外,还提供了其他常用镜像,如存储(MySQL、MongoDB)、缓存(Redis、Memcached)、消息队列(ActiveMQ、RabbitMQ)、大数据计算(Hadoop)、代理服务器(Nginx)、分布式框架(Dubbo、ZooKeeper),内容管理(Wordpress)等。开发者通过选择镜像可以一键部署相应的服务,轻松搭建起自己的整套架构。

自定义镜像: 如果官方提供的镜像不能满足需求,TAE还支持开发者构建自定义Docker镜像,通过自定义Docker镜像开发者可以创建高度个性化的服务,比如各类语言的运行环境(如:ruby、go、node.js等)、各类服务器软件Apache、Lighttpd等等。TAE支持两种构建自定义镜像方式:在线制作自定义镜像、本地制作镜像制作并提交TAE私有仓库。

公共镜像加速:

Docker registry在中国既没有部署服务器也没有CDN加速节点,造成国内开发者从Docker registry下载镜像效率低下,TAE利用自身的遍布全国的CDN网络,为开发者提供Docker registry的下载加速服务。

应用部署能力(Deploy)

互联网创业项目一般具有周期短、业务爆发快等特点,这使得应用的发布升级非常频繁,TAE提供完善的开发工具和部署发布系统,提升开发部署效率,保障应用平滑发布。

图片描述

发布管理系统 :

— 部署发布

根据不同的使用场景和开发习惯,TAE提供了多种部署发布手段:

1.上传部署

开发者在本地将程序编译打包好后,上传到服务的测试环境,上传完毕后TAE将自动执行部署。

2.编译部署

开发者使用代码仓库管理应用的源代码,可以通过指定代码仓库分支直接编译部署到测试环境。

3.回滚部署

开发者每次部署的程序包会自动备份到历史版本,发布异常时,可以指定回滚部署到某一历史版本。

4.Beta发布

发布新版本的程序时,可以选择正式环境中的部分实例进行发布,而其它实例保留运行老版本程序,新版本运行一段时间无异常后,再全部上线,以确保发布稳定 。

线上-测试环境模式

针对应用服务器类的服务,提供了线上环境和测试环境两个运行环境,开发者可以先在测试环境部署验证通过后,再上线到正式环境,确保发布稳定。

主-备环境模式

对于支持主-备部署的服务(如MongoDB、Redis等),支持创建Master和Slave两套运行环境,默认master提供线上服务,一旦Master发生问题,开发者可以将slave切换为Master,以保障线上服务稳定。

在线IDE :支持单文件热部署以及整体应用的打包部署;支持在线编辑代码、推送仓库等操作。

运维管理能力(Management)

据统计,70%的移动互联网应用都曾遭受网络攻击而导致故障,创业团队往往难以应对,TAE提供了多重的安全防护机制,让系统免受基础设施故障和网络攻击的困扰。

同时,互联网创业团队一般规模较小、资源有限,应用的日常运维工作又耗时耗力,开发专业运维系统又成本高昂,TAE集成了运行环境管理、数据库管理、自动化监控、日志采集分析、压测系统,将开发者从运维工作中解放出来,专注业务实现。

图片描述

运行环境安全 :应用运行环境数据采用多重备份,并且实现了自动恢复的策略,服务可用性达到99.95%。网络方面采用了硬件防火墙设施,提供四层到七层的全面防护,防护类型包括CC、SYN flood、UDP flood等所有DDoS攻击方式,支持清洗和黑洞机制,还接入了waf防护等功能。

运行环境管理:

弹性管理

当业务面临突发增长或下降时,开发者可以根据需要对服务的运行实例个数进行调整,TAE会自动完成新增实例的生产、部署和接入负载均衡器进行分流。弹性扩缩过程完全平滑,用户无感知。

SSH登录容器

对于运行中的实例(容器),开发者可以使用TAE提供的Webssh或SSH客户端工具直接登录到Docker容器进行管理,提供linux服务器的原生管理体验。

配置管理

TAE支持对服务的运行环境进行配置修改,对于包括网络接入、日志采集路径、环境变量、高级配置(主要是“网络模式”和“状态模式”)的配置进行修改。

数据库管理系统:

RDS控制台

对于TAE官方的RDS服务,开发者可以使用RDS控制台对数据库进行日常管理,支持导入SQL文件、数据库备份、数据库连接管理、数据库参数设置、重启实例等功能。

iDB工具

对于TAE官方的RDS服务和通过镜像创建的MySQL服务,还提供阿里自主研发的iDB管理工具,支持对数据库表结构、数据内容、日志进行透出和管理,并提供对实例会话、事务锁、数据库服务器性能等的监控。

监控系统:

针对应用和数据库,提供针对关键性能指标的实时监控和告警,提高系统日常运维效率。

应用监控

提供QPS(每秒查询率)、RT(请求响应时间)、PV(页面浏览量)、CPU使用率、访问错误码、自定义URL、日志关键字、应用所使用的数据源性能等进行监控。

RDS监控

提供连接数、存储空间、IOPS(每秒进行读写I/O操作的次数)、QPS(每秒查询率)、每秒SQL执行数、慢SQL、网络流量等指标的监控。

日志系统:

查询日志

提供日志自动采集和分析,支持对应用日志、访问日志进行格式化展示,支持包括错误码分析、URI日志分析、关键字筛查、慢日志分析在内的多种查询分析手段。

实时日志

支持日志的实时输出展示,为开发者排查问题提供强有力支持。

在线诊断工具:

TAE为Java开发者提供了Jstack分析工具,为php开发者提供了xhprof工具,支持开发者进行在线的性能问题排查。

压测系统:

服务端程序的自动化压测和分析工具,开发者提交测试任务后,系统自动对应用进行施压并搜集性能表现指标,并输出测试报告,帮助开发者诊断性能瓶颈。

权限管理系统:

对于团队作业的开发者,TAE提供针对控制台和代码仓库的分权管理体系,解决不同角色的开发者分工协作的问题,支持子账号创建,角色管理、权限分配等功能。

Spring手动回滚事务

throw new RuntimeException();

或者  TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

为什么不会滚呢??是对spring的事务机制就不明白。!!

默认spring 事务只在发生未被捕获的 RuntimeExcetpion时才回滚。
Spring Aop  异常捕获原理:被拦截的方法需显式抛出异常,并不能经任何处理,这样Aop代理才能捕获到方法的异常,才能进行回滚,默认情况下Aop只捕获RuntimeExcetpion的异常,但可以通过 配置来捕获特定的异常并回滚换句话说在service的方法中不使用try catch 或者在catch中最后加上throw new RuntimeExcetpion(),这样程序异常时才能被Aop捕获进而回滚

解决方案:
方案1.例如service层处理事务,那么service中的方法中不做异常捕获,或者在catch语句中最后增加throw new RuntimeExcetpion()语句,以便让Aop捕获异常再去回滚,并且在service上层(webservice客户端,view层action)要继续捕获这个异常并处理
方案2.在service层方法的catch语句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句,手动回滚,这样上层就无需去处理异常(现在项目的做法)。

以上就介绍了spring-mybatis 转Spring手动回滚事务,包括了spring-mybatis方面的内容,希望对Java教程有兴趣的朋友有所帮助。

从传统开发服务走向持续集成

前言

从15年毕业离校,至17年初,一直在传统开发领域做开发,一个应用从前端后台还有app等集合成一块,然后发布到运维,整个一条线。17年元旦开始,开始负责深圳千万级别的项目的技术构架,从传统领域走向微服务开发,从整个业务流程的转换到整个开发流程的确认,从开发的流水线到自动集成发布,整个过程完全走产品化路线,集成化路线。

为了更好的做好讲解,本文将对校园问答平台的开发做一次技术性解析,从技术选型到发布的整个过程。

技术选型:

开发工具:JDK8、STS(Eclipse),Maven+Nexus;

主要技术栈:

服务注册与发现:Dubbo、Zookeeper;

缓存 : Redis

Http容器:Jetty

版本控制:SVN(淘宝svn)

异步消息:Kafka

前端:bootstrap3

持续集成平台:Jenkins

选型的技术应该常见,这是在某一角度上来说,并不是越新的技术越好,或者听起来越高大上的技术即是完美,具体按业务场景。

数据库设计

数据库使用mysql,单表设计,数据库脱离第三范式,将业务逻辑移至应用层,多冗余设计。

基本字段:

e_id   全局主键

e_env 全局环境

c_id 容器的id

t_id 商户的id

app_id 应用的id

全局字段的意思即全局数据库引用此数据,便于后期其它应用接入做扩展处理。

服务模块划分:

为了更接近实际设计场景,这里做了大概规划,

基础服务,

 

答案不规范的话术

答案不规范的话术:

1、答案不符合平台规范,请按规范提问,回答人员会按自己的经验分享给你,给你最好的经验。

如:民大校花是谁?

2、问题范围太广,背景略少,回答人员无法明确经验,建立百度得到更详细的答案。

如:如何独立?

3、重复提问,请在公众号搜索问题。

如:广西民族大学男女平台多少。

4、未明确指明学校,回答人员无法定位问题,无法给出个人经验,感谢对平台的支持。

如:为什么宿舍那么贵,却没有空调。