解决方案:DreaMule(文件共享工具)与优采云 万能文章采集器下载评论软件详情对比

优采云 发布时间: 2022-11-27 19:42

  解决方案:DreaMule(文件共享工具)与优采云

万能文章采集器下载评论软件详情对比

  优采云

软件出品的万能文章采集软件,只需输入关键词即可采集各种网页和新闻,也可采集指定列表页(栏目页)的文章。

  注意:微信引擎有严格的限制,请将采集线程数设置为1,否则很容易生成验证码。

  

" />

  特征:

  1、依托优采云

软件独有的通用文字识别智能算法,可实现对任意网页文字的自动提取,准确率达95%以上。

  2. 只需输入关键词即可采集

微信文章、今日头条、一点资讯、百度资讯及网页、搜狗资讯及网页、360资讯及网页、谷歌资讯及网页、必应资讯及网页、雅虎资讯新闻和网页;批量关键词可以自动采集

  

" />

  3、可以有针对性的采集

指定网站(如百度经验、*敏*感*词*)栏目列表下的所有文章,智能匹配,无需编写复杂的规则。

  4、文章翻译功能,可以将采集

的文章翻译成英文再翻译回中文,实现伪原创翻译,支持谷歌和有道翻译。

  5.史上最简单最智能的文章采集

器,更*敏*感*词*一试即知!

  解决方案:聊聊Spring Boot服务监控,健康检查,线程信息,JVM堆信息,指标收集

  点击上面的“芋头源代码”,选择“”

  她在乎前波还是后波?

  会浪的浪才是好浪!

  每天10:33更新文章,每天掉一亿头头发……

  源码精品专栏

  去年我们项目做了微服务1.0的架构改造,但是服务监控没跟上。不,最近我被分配了监控我们所有核心微服务应用程序的任务。我们的微服务应用都是SpringBoot应用,那么很自然的就会想到带有Spring Boot的Actuator模块。(如果你没吃过猪肉,你总能听到猪的叫声,看到猪的奔跑)。

  这篇文章是我在完成本次工单后对Spring Boot Actuator模块的学习和应用的总结。在本文中,您可以了解到:

  那我就介绍一下:

  推荐自己的Spring Boot实战项目:

  Spring Boot Actuator模块提供了生产级的特性,比如健康检查、审计、指标采集

、HTTP tracing等,帮助我们监控和管理Spring Boot应用。该模块是采集

应用程序内部信息并对外暴露的模块。可以通过 HTTP 和 JMX 访问以上功能。

  由于暴露内部信息的性质,Actuator 还可以与一些外部应用程序监控系统(Prometheus、Graphite、DataDog、Influx、Wavefront、New Relic 等)集成。这些监控系统提供出色的仪表板、图表、分析和警报,可帮助您通过统一友好的界面监控和管理您的应用程序。

  Actuator 使用 Micrometer 与这些外部应用程序监控系统集成。这使得以最少的配置集成外部监控系统变得容易。

  Micrometer在Java平台上提供了通用的性能数据采集API,应用程序只需要使用Micrometer的通用API即可采集性能指标。Micrometer 将负责完成与不同监控系统的适配工作。这使得切换监控系统变得容易。

  比较Slf4j在Java Logger中的定位。

  推荐一下我自己做的Spring Cloud实战项目:

  让我们先创建一个演示应用程序。

  spring init -d=web,actuator -n=actuator-demo actuator-demo<br /><br />

  图片.png

  <br />    ...<br /> <br />  org.springframework.boot<br />  spring-boot-starter-actuator<br /> <br />    ...<br /><br /><br /><br />

  dependencies {<br /> compile("org.springframework.boot:spring-boot-starter-actuator")<br />}<br /><br />

  Spring Boot 提供了所谓的端点(以下翻译为端点),用于外部访问和与应用程序的交互。

  例如,/health 端点提供有关应用程序健康状况的一些基本信息。指标端点提供了一些有用的应用程序指标(JVM 内存使用情况、系统 CPU 使用情况等)。

  这些 Actuator 模块已经拥有的端点称为本机端点。根据端点的作用,我们可以大致分为三类:

  关于native endpoints的详细介绍请参考官网,这里不再赘述,增加篇幅。

  注意:

  我们可以通过以下配置配置通过 JMX 和 HTTP 公开的端点。

  属性默认值

  management.endpoints.jmx.exposure.exclude

  management.endpoints.jmx.exposure.include

  *

  management.endpoints.web.exposure.exclude

  management.endpoints.web.exposure.include

  资讯、健康

  可开启所有监控点

  management.endpoints.web.exposure.include=*<br /><br />

  也可以选择打开部分,“*”表示暴露所有端点,如果指定多个端点,用“,”隔开

  management.endpoints.web.exposure.exclude=beans,trace<br /><br />

  Actuator默认所有监控点路径为/actuator/*,当然这个路径也支持根据需要自定义。

  management.endpoints.web.base-path=/minitor<br /><br />

  设置重启后,访问地址又会变成/minitor/*。

  现在我们配置如下:

  

" />

  # "*" 代表暴露所有的端点 如果指定多个端点,用","分开<br />management.endpoints.web.exposure.include=*<br /># 赋值规则同上<br />management.endpoints.web.exposure.exclude=<br /><br />

  启动DEMO程序,访问:8080/actuator,查看暴露的端点:

  图片.png

  上面显示是因为chrome浏览器安装了json-handle插件,实际上返回了一大段json

  下面,我将重点介绍几个更重要的端点。

  /health 端点聚合应用程序的健康指标以检查应用程序的健康状况。端点公开的应用程序健康信息取决于:

  management.endpoint.health.show-details=always<br /><br />

  可以使用以下值之一配置此属性:

  名称描述

  绝不

  不显示详细信息,up或down状态,默认配置

  何时授权

  详细信息将显示给经过身份验证的用户。授权角色可以通过management.endpoint.health.roles配置

  总是

  向所有用户公开详细信息

  按照上面的配置,配置always之后,我们启动项目,访问:8080/actuator/health端口,可以看到如下信息:

  图片.png

  是不是感觉健康信息少了点?不用担心,这是因为我们创建了一个基本的 Demo 工程,没有依赖很多组件。

  /health端点有很多自动配置的健康指标:redis、rabbitmq、db等组件。当你的项目依赖了相应的组件时,会自动组装这些健康指标,然后采集

相应的信息。比如上面的diskSpace节点信息就是DiskSpaceHealthIndicator在工作。

  图片.png

  以上截图摘自官方文档

  这是我来自另一个项目的 /health 端点信息。

  图片.png

  当上述其中一个组件状态异常时,应用服务整体状态为down。我们也可以通过配置来关闭组件的健康监控。

  management.health.mongo.enabled: false<br /><br />

  或者禁用所有自动配置的健康指标:

  management.health.defaults.enabled: false<br /><br />

  当然你也可以自定义一个Health Indicator,只需要实现HealthIndicator接口或者继承AbstractHealthIndicator类即可。

  /**<br /> * @author Richard_yyf<br /> * @version 1.0 2020/1/16<br /> */<br />@Component<br />public class CustomHealthIndicator extends AbstractHealthIndicator {<br /><br />    @Override<br />    protected void doHealthCheck(Health.Builder builder) throws Exception {<br />        // 使用 builder 来创建健康状态信息<br />        // 如果你throw 了一个 exception,那么status 就会被置为DOWN,异常信息会被记录下来<br />        builder.up()<br />                .withDetail("app", "这个项目很健康")<br />                .withDetail("error", "Nothing, I'm very good");<br />    }<br />}<br /><br />

  最终效果:

  图片.png

  /metrics端点用于返回当前应用的各种重要指标,如:内存信息、线程信息、垃圾回收信息、tomcat、数据库连接池等。

  {<br />    "names": [<br />        "tomcat.threads.busy",<br />        "jvm.threads.states",<br />        "jdbc.connections.active",<br />        "jvm.gc.memory.promoted",<br />        "http.server.requests",<br />        "hikaricp.connections.max",<br />        "hikaricp.connections.min",<br />        "jvm.memory.used",<br />        "jvm.gc.max.data.size",<br />        "jdbc.connections.max",<br />         ....<br />    ]<br />}<br /><br />

  与1.x不同的是,Actuator在这个界面上看不到具体的指标信息,而只是展示了一个指标列表。为了获取某个指标的详细信息,我们可以请求具体的指标信息,像这样:

  http://localhost:8080/actuator/metrics/{MetricName}<br /><br />

  比如我访问/actuator/metrics/jvm.memory.max,返回的信息如下:

  图片.png

  您还可以使用查询参数来查看单个区域。例如,您可以访问/actuator/metrics/jvm.memory.max?tag=id:Metaspace。结果是:

  图片.png

  /loggers 端点公开有关我们程序中配置的所有记录器的信息。我们可以通过访问/actuator/loggers看到,

  图片.png

  

" />

  您还可以通过以下方式访问单个记录器,

  http://localhost:8080/actuator/loggers/{name}<br /><br />

  例如,如果我现在访问根记录器,:8080/actuator/loggers/root

  {<br />    "configuredLevel": "INFO",<br />    "effectiveLevel": "INFO"<br />}<br /><br />

  /loggers端点我最想说的就是这个功能,它可以动态修改你的日志级别。

  例如,我们可以通过以下方式修改root logger的日志级别。我们只需要发起一个POST请求,URL为:8080/actuator/loggers/root,POST消息如下:

  {<br />   "configuredLevel": "DEBUG"<br />}<br /><br />

  图片.png

  仔细想想,这个功能是不是很有用?如果在生产环境中,想让你的应用输出一些Debug信息,以便诊断一些异常情况,只需要按照上面的方法修改即可,不需要重启应用。

  如果要重置为默认值,请将值更改为 null

  /info 端点可用于显示有关您的程序的信息。我了解的是一些程序的基本信息。并且你可以根据自己的需要在配置文件application.properties中进行个性化配置(默认情况下,这个端点只会返回一个空的json内容。):

  info.app.name=actuator-test-demo<br />info.app.encoding=UTF-8<br />info.app.java.source=1.8<br />info.app.java.target=1.8<br /># 在 maven 项目中你可以直接用下列方式引用 maven properties的值<br /># info.app.encoding=@project.build.sourceEncoding@<br /># info.app.java.source=@java.version@<br /># info.app.java.target=@java.version@<br /><br />

  要启动项目,请访问:8080/actuator/info:

  {<br />    "app": {<br />        "encoding": "UTF-8",<br />        "java": {<br />            "source": "1.8.0_131",<br />            "target": "1.8.0_131"<br />        },<br />        "name": "actuator-test-demo"<br />    }<br />}<br /><br />

  /beans 端点将返回 Spring 容器中所有 bean 的别名、类型、单例和依赖项等信息。

  访问:8080/actuator/beans,返回如下:

  图片.png

  访问::8080/actuator/heapdump 会自动生成一个Jvm堆文件heapdump。我们可以使用JDK自带的Jvm监控工具VisualVM打开这个文件查看内存快照。

  图片.png

  我个人觉得这个端点很好用,可以让我们每天定位问题的时候查看线程的状态。主要显示线程名称、线程ID、线程状态、是否等待锁资源、线程堆栈等信息,可能看起来不够直观。访问:8080/actuator/threaddump 返回如下:

  图片.png

  该端点属于操作控制类端点,可以优雅的关闭Spring Boot应用。要使用此功能,首先需要在配置文件中启用它:

  management.endpoint.shutdown.enabled=true<br /><br />

  由于shutdown接口默认只支持POST请求,所以我们启动Demo工程,向:8080/actuator/shutdown发起POST请求。返回信息:

  {<br />    "message": "Shutting down, bye..."<br />}<br /><br />

  然后关闭应用程序。

  由于打开和关闭应用程序本身的操作是一件非常危险的事情,所以在实际在线使用时,我们需要为其添加一定的保护机制,例如:自定义Actuator的端点路径,集成Spring Security进行安全验证,等(如果不是特别需要,这个端点不需要打开)

  由于端点信息和由此产生的交互非常敏感,因此必须防止未经授权的外部访问。如果您的应用程序依赖于 Spring Security,则默认情况下使用基于表单的 HTTP 身份验证来保护端点。

  如果没有,只需添加相应的依赖项:

  <br />   org.springframework.boot<br />   spring-boot-starter-security<br /><br /><br />

  添加后,我们需要定义安全验证规则来覆盖Spring Security的默认配置。

  这里我给出两个版本的模板配置:

  import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;<br />import org.springframework.boot.actuate.context.ShutdownEndpoint;<br />import org.springframework.boot.autoconfigure.security.servlet.PathRequest;<br />import org.springframework.context.annotation.Configuration;<br />import org.springframework.security.config.annotation.web.builders.HttpSecurity;<br />import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;<br /><br />/**<br /> * @author Richard_yyf<br /> */<br />@Configuration<br />public class ActuatorSecurityConfig extends WebSecurityConfigurerAdapter {<br /><br />    /*<br />     * version1:<br />     * 1. 限制 '/shutdown'端点的访问,只允许ACTUATOR_ADMIN访问<br />     * 2. 允许外部访问其他的端点<br />     * 3. 允许外部访问静态资源<br />     * 4. 允许外部访问 '/'<br />     * 5. 其他的访问需要被校验<br />     * version2:<br />     * 1. 限制所有端点的访问,只允许ACTUATOR_ADMIN访问<br />     * 2. 允许外部访问静态资源<br />     * 3. 允许外部访问 '/'<br />     * 4. 其他的访问需要被校验<br />     */<br /><br />    @Override<br />    protected void configure(HttpSecurity http) throws Exception {<br />        // version1<br />//        http<br />//                .authorizeRequests()<br />//                    .requestMatchers(EndpointRequest.to(ShutdownEndpoint.class))<br />//                        .hasRole("ACTUATOR_ADMIN")<br />//                .requestMatchers(EndpointRequest.toAnyEndpoint())<br />//                    .permitAll()<br />//                .requestMatchers(PathRequest.toStaticResources().atCommonLocations())<br />//                    .permitAll()<br />//                .antMatchers("/")<br />//                    .permitAll()<br />//                .antMatchers("/**")<br />//                    .authenticated()<br />//                .and()<br />//                .httpBasic();<br /><br />        // version2<br />        http<br />                .authorizeRequests()<br />                .requestMatchers(EndpointRequest.toAnyEndpoint())<br />                    .hasRole("ACTUATOR_ADMIN")<br />                .requestMatchers(PathRequest.toStaticResources().atCommonLocations())<br />                    .permitAll()<br />                .antMatchers("/")<br />                    .permitAll()<br />                .antMatchers("/**")<br />                    .authenticated()<br />                .and()<br />                .httpBasic();<br />    }<br />}<br /><br />

  application.properties的相关配置如下:

  # Spring Security Default user name and password<br />spring.security.user.name=actuator<br />spring.security.user.password=actuator<br />spring.security.user.roles=ACTUATOR_ADMIN<br />

  -结尾-

  欢迎加入我的知识星球,一起探讨架构,交流源码。要加入,请按住下面的二维码:

  知识星球上已更新源码,分析如下:

  最近更新的系列《太郎SpringBoot 2.X入门》101多篇,涵盖MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo 、RabbitMQ、RocketMQ、Kafka、性能测试等。

  提供了一个近3W行代码的SpringBoot实例,以及一个4W多行代码的电商微服务项目。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线