siaorg / sia-task Goto Github PK
View Code? Open in Web Editor NEW微服务任务调度框架
License: Apache License 2.0
微服务任务调度框架
License: Apache License 2.0
首先是jarPackage的sia-task-config的jar包跟docker-build.sh的版本不一致。
然后启动后访问8081没有服务,容器里面也没有nginx。
类:com.sia.scheduler.http.impl.OnlineListenableFutureCallback 代码126 行 .
private boolean onFailure(JobMTask onlineTask, Throwable throwable) {
boolean isCountDown;
switch (FailoverEnum.getByValue(onlineTask.getFailover().toLowerCase())) {
case IGNORE:
onlineTask.getFailover() 为null 的时候转小写出 NPE 了.
这个方法里面从runningTaskMap读取不到数据的时候会空指针异常
@before(value = "serviceStatistics(onlineTask)")
public void deBefore(JoinPoint joinPoint, OnlineTask onlineTask) throws Throwable
if (runningTaskMap.containsKey(task) && runningTaskMap.get(task).equals(TaskStatus.RUNNING)) {
throw new OnlineTaskException("This task is running");
}
2.下面这个方法同样的问题。
@AfterReturning(returning = "result", pointcut = "serviceStatistics(onlineTask)")
public void afterReturning(JoinPoint joinPoint, OnlineTask onlineTask, Object result)
if (runningTaskMap.get(task).equals(TaskStatus.RUNNING))
3.同样的问题。
@before(value = "serviceStatistics(onlineTask)")
public void deBefore(JoinPoint joinPoint, OnlineTask onlineTask) throws Throwable {
if (runningTaskMap.containsKey(task) && runningTaskMap.get(task).equals(TaskStatus.RUNNING)) {
throw new OnlineTaskException("This task is running");
}
4. 下面这个方法既然后面用横线截取字符串,那就是要求application name必须带中划线(-)记得文档里面写清楚啊,这里会报字符串数组越界异常的,如果application name里面没有中划线。
/**
* @param request
* @return
*/
public Map<String, String> builtMqMessage(HttpServletRequest request) {
Map<String, String> jsonObject = new HashMap<String, String>(8);
jsonObject.put("GroupName", onlineTaskAppProperty.getApplicationName().substring(0,
onlineTaskAppProperty.getApplicationName().indexOf("-")));
jsonObject.put("ApplicationName", onlineTaskAppProperty.getApplicationName());
jsonObject.put("TaskName", onlineTaskAppProperty.getApplicationName() + ":" + request.getServletPath());
jsonObject.put("Host", onlineTaskAppProperty.getIPAddress() + ":" + onlineTaskAppProperty.getServerPort());
jsonObject.put("RequestURL", request.getRequestURL().toString());
jsonObject.put("Date", DateFormatHelper.format(new Date()));
return jsonObject;
}
多个任务分别在多个调度器上工作时,会导致在某个调度器上任务出现异常,关闭任务重新激活后会正常运行一段时间,但在某个时间点又会出现异常。多任务在多个调度器上运行,稳定性待验证
是否有最新版的完整Demo可以分享?master的源码中有些地方的配置没有在文档中提及
这个可以支持多级任务管理吗?例如 A->B-C->D 类似这样子
基于版本进行二次开发,导致以后版本升级维护起来比较麻烦,是否可以对外开源部分简单的权限认证? @BeliefYou8 @TeddiWolf @lijun006788
提问:是否可以直接配置接口地址,触发任务调度,我在本地搭建运行,找不到配置的地方
打扰打扰。。。
如题,可以传个前端编译好的包么? 这样可以工作么?
有qq群么?很想深入学习下
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set @fail := 0;
select DATE_FORMAT(last_time,'%Y-%m-%d %H:%i:%s') as ti' at line 2
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
安装依赖包时提示如下错误
请问如何在windows 或者 centos下正确编译
Error making request.
Error: read ECONNRESET
at TLSWrap.onStreamRead (internal/stream_base_commons.js:111:27)
Please report this full log at https://github.com/Medium/phantomjs
npm WARN The package eslint-config-standard is included as both a dev and production dependency.
npm WARN The package eslint-plugin-html is included as both a dev and production dependency.
npm WARN The package eslint-plugin-promise is included as both a dev and production dependency.
npm WARN The package eslint-plugin-standard is included as both a dev and production dependency.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/quill-image-resize-module/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: node install.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
最新的sql脚本存在很多错误,有些地方少了括号,有些地方少了分号
2019-05-31 16:45:02.911 ERROR 9500 --- [http-nio-10615-exec-6] c.s.c.web.controller.MonitorController : >>>>>>>>>> getJobGroupDetails Error
org.springframework.jdbc.BadSqlGrammarException:
COUNT(DISTINCT sbk.task_id) AS task_count ,
COUNT(DISTIN' at line 2
COUNT(DISTINCT sbk.task_id) AS task_count ,
COUNT(DISTIN' at line 2
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'groups,
COUNT(DISTINCT sbk.task_id) AS task_count ,
COUNT(DISTIN' at line 2
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:231)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:75)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:447)
at com.sun.proxy.$Proxy64.selectList(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:231)
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:137)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:53)
at com.sun.proxy.$Proxy68.selectJobGroupDetails(Unknown Source)
at com.sia.config.web.service.JobMTaskService.selectJobGroupDetails(JobMTaskService.java:222)
at com.sia.config.web.service.JobMTaskService$$FastClassBySpringCGLIB$$290e8d91.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:669)
at com.sia.config.web.service.JobMTaskService$$EnhancerBySpringCGLIB$$3a3a8662.selectJobGroupDetails()
at com.sia.config.web.controller.MonitorController.getJobGroupDetails(MonitorController.java:192)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.sia.config.web.filter.SimpleCorsFilter.doFilter(SimpleCorsFilter.java:73)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'groups,
COUNT(DISTINCT sbk.task_id) AS task_count ,
COUNT(DISTIN' at line 2
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:118)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:960)
at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:388)
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3005)
at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:440)
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3003)
at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:136)
at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:493)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:63)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
at com.github.pagehelper.PageInterceptor.intercept(PageInterceptor.java:142)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
at com.sun.proxy.$Proxy80.query(Unknown Source)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:434)
... 72 common frames omitted
麻烦部署文档修改一下。
一会是配置nginx在8080端口访问;一会又是直接localhost:10615。
统一一下标准化配置。
1.主键id建议统一用bigint
2.表的索引需要加一下
3.具体可以参考:https://www.processon.com/view/link/5b18e46ce4b07596cf4411c4
TASK执行器被调用时调用方IP提示
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[ERROR] [ERROR] Project 'com.sia:sia-task-config:1.0.0' is duplicated in the reactor @
[ERROR] Project 'com.sia:sia-task-config:1.0.0' is duplicated in the reactor -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DuplicateProjectException
RT
2019-05-30 17:48:09.804 INFO 217792 --- [Zookeeper-TreeCacheListener-2] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.3.0) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
NOT STARTED.
Currently in standby mode.
Number of jobs executed: 0
Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 60 threads.
Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
2019-05-30 17:48:09.804 INFO 217792 --- [Zookeeper-TreeCacheListener-2] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
2019-05-30 17:48:09.805 INFO 217792 --- [Zookeeper-TreeCacheListener-2] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.3.0
2019-05-30 17:48:09.807 ERROR 217792 --- [Zookeeper-TreeCacheListener-2] o.a.c.framework.recipes.cache.TreeCache :
java.lang.NullPointerException: null
at com.sia.scheduler.service.common.CommonService.runJob(CommonService.java:325)
at com.sia.scheduler.zk.monitor.JobMonitor.acquireJob(JobMonitor.java:289)
at com.sia.scheduler.zk.monitor.JobMonitor.access$200(JobMonitor.java:60)
at com.sia.scheduler.zk.monitor.JobMonitor$1.process(JobMonitor.java:372)
at com.sia.core.curator.CuratorClient$4.childEvent(CuratorClient.java:562)
at org.apache.curator.framework.recipes.cache.TreeCache$2.apply(TreeCache.java:749)
at org.apache.curator.framework.recipes.cache.TreeCache$2.apply(TreeCache.java:743)
at org.apache.curator.framework.listen.ListenerContainer$1.run(ListenerContainer.java:93)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
如题
; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'skyworld_task.bt.task_group_name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:91)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:82)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:75)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:447)
at com.sun.proxy.$Proxy62.selectList(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:231)
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:137)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:53)
at com.sun.proxy.$Proxy63.selectAuth(Unknown Source)
at com.sia.config.web.service.BasicJobService.selectAuth(BasicJobService.java:163)
at com.sia.config.web.service.BasicJobService$$FastClassBySpringCGLIB$$7d04b977.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:669)
at com.sia.config.web.service.BasicJobService$$EnhancerBySpringCGLIB$$a1351280.selectAuth()
at com.sia.config.web.controller.JobController.selectAuth(JobController.java:194)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
{"timestamp":1559104769109,"status":405,"error":"Method Not Allowed","exception":"org.springframework.web.HttpRequestMethodNotSupportedException","message":"Request method 'POST' not supported","path":"/taskapi/connextest"}
/**
* front-end calls the API
* Task connectivity test
* For tasks that use the sia-task-hunter component and achieve automatic fetching
* through standard annotations,sia-task-hunter adds permission control.
* IP that is not within this permission cannot call the task.
* If it is necessary to test whether the task can work normally (POST only)
* @param request
* @return
*/
@RequestMapping(value = "/connextest", produces = "application/json;charset=UTF-8",method = RequestMethod.GET)
@responsebody
public String connexTest(@RequestBody Map<String,String> request) {
if(request == null) {
LOGGER.info(Constants.LOG_PREFIX +"connextest by user:"+ userService.getCurrentUser());
return ResultBody.failed();
}
String param = request.get("param");
String result;
try {
String url = request.get("url");
LOGGER.info(Constants.LOG_PREFIX +"connextest by user:"+ userService.getCurrentUser());
LOGGER.info(Constants.LOG_PREFIX + "url:"+ url);
LOGGER.info(Constants.LOG_PREFIX +"param: "+param);
result = basicTaskService.testTask(url,param);
} catch (Exception e) {
LOGGER.error(Constants.LOG_PREFIX + " connexTest Error :", e);
return ResultBody.error();
}
return ResultBody.success((Object) result);
}
最后再说多说一句:不愿意不想做开源,不要放出来好么?
org.springframework.jdbc.BadSqlGrammarException:
; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'skyworld_task.bt.task_group_name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:91)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:82)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:75)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:447)
at com.sun.proxy.$Proxy64.selectList(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:231)
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:137)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:53)
at com.sun.proxy.$Proxy65.selectAuth(Unknown Source)
at com.sia.config.web.service.BasicJobService.selectAuth(BasicJobService.java:163)
at com.sia.config.web.service.BasicJobService$$FastClassBySpringCGLIB$$7d04b977.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:669)
at com.sia.config.web.service.BasicJobService$$EnhancerBySpringCGLIB$$64e41629.selectAuth()
at com.sia.config.web.controller.JobController.selectAuth(JobController.java:202)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.sia.config.web.filter.SimpleCorsFilter.doFilter(SimpleCorsFilter.java:73)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'skyworld_task.bt.task_group_name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.Util.getInstance(Util.java:408)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2495)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1903)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1242)
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3005)
at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:440)
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3003)
at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:136)
at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:493)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:63)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
at com.github.pagehelper.PageInterceptor.intercept(PageInterceptor.java:142)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
at com.sun.proxy.$Proxy80.query(Unknown Source)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:434)
... 72 common frames omitted
task_proc_watcher.sh脚本内"ps -fC java | grep $process_flag | wc -l" 此行代码在mac系统不支持"ps -fC java "。脚本run4config.sh保活功能可采用 */1 * * * * flock -xn file.lock -c ''实现
spring-boot-starter-parent 2.X.X
spring-cloud-dependencies Finchley
链接都是 http://...:****/architect-readme.html这种。。。
请问,如果客户端业务逻辑处理长达几个小时,这种情况使用HTTP进行交互会不会占用系统大量资源呢?
修改了部署包config目录下的zooKeeperHosts为192.168.2.18:2181,192.168.2.18:2182,192.168.2.18:2183,然后执行start_task_config_open.sh 脚本,发现此配置并没有覆盖jar包中的默认配置,zk'客户端还是去连的127.0.0.1:2181,task_config_open.start 日志:
2019-09-21 16:27:46.709 INFO 22348 --- [ main] org.apache.zookeeper.ZooKeeper : Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=60000 watcher=org.apache.curator.ConnectionState@2631f68c
2019-09-21 16:27:46.730 INFO 22348 --- [localhost:2181)] org.apache.zookeeper.ClientCnxn : Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
2019-09-21 16:27:46.732 INFO 22348 --- [ main] com.sia.core.curator.CuratorClient : success connect to Zookeeper: 127.0.0.1:2181
2019-09-21 16:27:46.732 INFO 22348 --- [ main] com.sia.core.curator.CuratorClient : addShutdownHook for CuratorClient
2019-09-21 16:27:46.737 INFO 22348 --- [localhost:2181)] org.apache.zookeeper.ClientCnxn : Socket error occurred: localhost/127.0.0.1:2181: 拒绝连接
2019-09-21 16:27:46.743 INFO 22348 --- [ main] com.sia.core.curator.CuratorClient : addAllAuth success
2019-09-21 16:27:47.841 INFO 22348 --- [localhost:2181)] org.apache.zookeeper.ClientCnxn : Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
2019-09-21 16:27:47.842 INFO 22348 --- [localhost:2181)] org.apache.zookeeper.ClientCnxn : Socket error occurred: localhost/127.0.0.1:2181: 拒绝连接
2019-09-21 16:27:48.943 INFO 22348 --- [localhost:2181)] org.apache.zookeeper.ClientCnxn : Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
在sia-task-build-component下执行mvn clean install命令时报以下错误:
[ERROR] Failed to execute goal on project sia-task-admin: Could not resolve dependencies for project com.sia:sia-task-admin:jar:0.0.2: Failed to collect dependencies at com.sia:sia-task-mapper-mybatis:jar:0.0.2: Failed to read artifact descriptor for com.sia:sia-task-mapper-mybatis:jar:0.0.2: Could not transfer artifact com.sia:sia-task-mapper-mybatis:pom:0.0.2 from/to spring-releases (https://repo.spring.io/libs-release): Transfer failed for https://repo.spring.io/libs-release/com/sia/sia-task-mapper-mybatis/0.0.2/sia-task-mapper-mybatis-0.0.2.pom: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target -> [Help 1]
经测试通过提高mysql-connector-java 包版本可解决。
如题
试抢占JOB IS SUCCESS , 开始启动JOB; JobGroupName is network JobKey is network_test-noParam
2019-09-11 09:41:39.570 INFO 2733 --- [ main] c.s.s.q.impl.OnlineSchedulerFactory : >>>>>>>>>>****************************** init OnlineScheduler ******************************
2019-09-11 09:41:39.615 INFO 2733 --- [ main] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor
2019-09-11 09:41:39.620 INFO 2733 --- [ main] org.quartz.simpl.SimpleThreadPool : Job execution threads will use class loader of thread: main
2019-09-11 09:41:39.669 INFO 2733 --- [ main] org.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
2019-09-11 09:41:39.670 INFO 2733 --- [ main] org.quartz.core.QuartzScheduler : Quartz Scheduler v.2.3.0 created.
2019-09-11 09:41:39.671 INFO 2733 --- [ main] c.s.s.q.l.MultiSerialJobListener : this is method MultiSerialJobListener initialize DefaultQuartzScheduler
2019-09-11 09:41:39.671 INFO 2733 --- [ main] org.quartz.simpl.RAMJobStore : RAMJobStore initialized.
2019-09-11 09:41:39.672 INFO 2733 --- [ main] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.3.0) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
NOT STARTED.
Currently in standby mode.
Number of jobs executed: 0
Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 60 threads.
Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
2019-09-11 09:41:39.673 INFO 2733 --- [ main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
2019-09-11 09:41:39.673 INFO 2733 --- [ main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.3.0
2019-09-11 09:41:39.677 INFO 2733 --- [ main] utoConfigurationReportLoggingInitializer :
Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2019-09-11 09:41:39.685 ERROR 2733 --- [ main] o.s.boot.SpringApplication : Application startup failed
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:735)
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:716)
at org.springframework.boot.SpringApplication.afterRefresh(SpringApplication.java:703)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:304)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)
at com.sia.scheduler.SchedulerApplication.main(SchedulerApplication.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: java.lang.NullPointerException: null
at com.sia.scheduler.service.common.CommonService.runJob(CommonService.java:325)
at com.sia.scheduler.zk.monitor.JobMonitor.acquireJob(JobMonitor.java:289)
at com.sia.scheduler.zk.monitor.JobMonitor.handleJobKey(JobMonitor.java:250)
at com.sia.scheduler.zk.monitor.JobMonitor.handleJobKey(JobMonitor.java:237)
at com.sia.scheduler.zk.monitor.JobMonitor.initJobZookeeper(JobMonitor.java:155)
at com.sia.scheduler.zk.monitor.JobMonitor.run(JobMonitor.java:177)
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:732)
... 14 common frames omitted
2019-09-11 09:41:39.687 INFO 2733 --- [ main] ationConfigEmbeddedWebApplicationContext : Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@b7dd107: startup date [Wed Sep 11 09:41:25 CST 2019]; parent: org.springfram
ework.context.annotation.AnnotationConfigApplicationContext@1d251891
2019-09-11 09:41:39.691 INFO 2733 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed beans on shutdown
2019-09-11 09:41:39.691 INFO 2733 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed beans
2019-09-11 09:41:39.697 INFO 2733 --- [tor-Framework-0] o.a.c.f.imps.CuratorFrameworkImpl : backgroundOperationsLoop exiting
2019-09-11 09:41:39.702 INFO 2733 --- [ main] org.apache.zookeeper.ZooKeeper : Session: 0x46cdd016a0e6142 closed
2019-09-11 09:41:39.704 INFO 2733 --- [ main] c.s.hunter.register.OnlineTaskRegister : OnlineTask->close zookeeper connection
2019-09-11 09:41:39.709 INFO 2733 --- [ain-EventThread] org.apache.zookeeper.ClientCnxn : EventThread shut down for session: 0x46cdd016a0e6142
job中进行Task参数配置时,task_选取实例策略选择固定ip,选取实例列表无数据
调度器故障转移貌似没有这部分的实现哦。
当前调度器开始调度,执行一半的任务,调度器挂掉了之后,其他调度器抢占任务,但是没有继续执行后续的任务哦。
目前没看到这块代码,是我看漏了吗??方便指出在哪一块吗?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.