michaeljmarshall commented on code in PR #349:
URL: https://github.com/apache/pulsar-site/pull/349#discussion_r1082919747
##########
src/pages/index.js:
##########
@@ -191,7 +190,9 @@ export default function Home() {
/>
<SubHeroBlock
heading="What is Apache Pulsar?"
- content="Apache Pulsar is a cloud-native, multi-tenant,
high-performance solution for server-to-server messaging and queuing built on
the publisher-subscribe (pub-sub) pattern. Pulsar combines the best features of
a traditional messaging system like RabbitMQ with those of a pub-sub system
like Apache Kafka – scaling up or down dynamically without downtime. It's
used by thousands of companies for high-performance data pipelines,
microservices, instant messaging, data integrations, and more."
+ content="Apache Pulsar is an all-in-one messaging and streaming
platform. Messages can be consumed and acknowledged individually or consumed as
streams with less than 5ms of latency. Its layered architecture allows rapid
scaling across hundreds of nodes, without data reshuffling. Its features
include multi-tenancy with resource separation and access control,
geo-replication across regions, tiered storage and support for five official
client languages. It supports up to one million unique topics and is designed
to simplify your application architecture.
+
+Pulsar is a Top 10 Apache Software Foundation project and has a vibrant and
passionate community and user base spanning small companies and large
enterprises."
Review Comment:
What do you think about linking this claim to the ASF blog post?
##########
src/components/HomepageFeatures.js:
##########
@@ -4,48 +4,48 @@ import ReactMarkdown from "react-markdown";
const FeatureList = (language) => [
{
- title: "Cloud-native",
- Svg: require("../../static/img/Technology-Solution.svg").default,
- content: "A multiple layer approach separating compute from storage to
work with cloud infrastructures and Kubernetes.",
+ title: "Automatic Load Balancing",
+ Svg: require("../../static/img/automatic-load-balancing.svg").default,
+ content: "Add or remove nodes and let Pulsar load balance topic bundles
automatically. Hot spotted topic bundles are automatically split and evenly
distributed across the brokers.",
},
{
title: "Serverless functions",
Svg: require("../../static/img/proven-in-production.svg").default,
- content:"Write serverless functions with developer-friendly APIs to
natively process data immediately upon arrival. No need to run your own stream
processing engine.",
+ content:"Write and deploy functions natively using Pulsar Functions.
Process messages using Java, Go, or Python without deploying fully-fledged
applications. Kubernetes runtime is bundled.",
},
{
- title: "Horizontally scalable",
+ title: "Rapid Horizontal Scalability",
Svg: require("../../static/img/horizontally-scalable.svg").default,
- content: "Expand capacity seamlessly to hundreds of nodes.",
+ content: "Scales horizontally to handle the increased load. Its unique
design and separate storage layer enable handling the sudden surge in traffic
by scaling out in seconds.",
},
{
- title: "Low latency with durability",
+ title: "Low-latency messaging and streaming",
Svg: require("../../static/img/low-latency.svg").default,
- content:"Low publish latency (< 5ms) at scale with strong durability
guarantees.",
+ content:"Acknowledge messages individually (RabbitMQ style) or cumulative
per partition (i.e., offset-like). Enables use cases such as distributed work
queues or order-preserving data streams at very large scales (hundreds of
nodes) and low latency (<5ms).",
},
{
- title: "Geo-replication",
+ title: "Seamless Geo-Replication",
Svg: require("../../static/img/geo-replication.svg").default,
- content: "Configurable replication between data centers across multiple
geographic regions.",
+ content: "Protect against complete zone outages using replication across
different geographic regions. Flexible and configurable replication strategies
across distant Pulsar Clusters. Uniquely supports automatic client failover to
healthy clusters.",
},
{
title: "Multi-tenancy",
Svg: require("../../static/img/multi-tenancy.svg").default,
- content:"Built from the ground up as a multi-tenant system. Supports
isolation, authentication, authorization, and quotas.",
+ content:"Maintain one cluster for your entire organization using tenants.
Access control across data and actions using tenant policies. Isolate specific
brokers to a tenant when maximum noisy neighbor protection is needed.",
},
{
- title: "Persistent storage",
+ title: "Official multi-language support",
Svg: require("../../static/img/persistent-storage.svg").default,
- content:"Persistent message storage based on Apache BookKeeper. IO-level
isolation between write, and read operations.",
+ content:"Officially maintained Pulsar Clients for Java, Go, Python, C++,
Node.js, and C#.",
},
{
- title: "Client libraries",
- Svg: require("../../static/img/client-libraries.svg").default,
- content: "Flexible messaging models with high-level APIs for Java, Go,
Python, C++, Node.js, WebSocket and C#.",
+ title: "Official 3rd party integrations",
+ Svg:
require("../../static/img/official-3rd-party-integrations.svg").default,
+ content: "Pulsar has officially maintained connectors with popular 3rd
parties: MySQL, Elasticsearch, Cassandra, and more. Allows streaming data in
(source) or out (sink).",
},
{
- title: "Operability",
- Svg: require("../../static/img/operability.svg").default,
+ title: "Supports up to 1M topics",
Review Comment:
It's out of the scope of this PR, but I wonder if we should provide users
with a reference architecture to better understand how they can achieve the 1M
topics. Maybe it could be a "cookbook". One reason I mention this is because a
user might be interested to know how many nodes are required to achieve this
high number of topics.
##########
src/components/HomepageFeatures.js:
##########
@@ -4,48 +4,48 @@ import ReactMarkdown from "react-markdown";
const FeatureList = (language) => [
{
- title: "Cloud-native",
- Svg: require("../../static/img/Technology-Solution.svg").default,
- content: "A multiple layer approach separating compute from storage to
work with cloud infrastructures and Kubernetes.",
+ title: "Automatic Load Balancing",
+ Svg: require("../../static/img/automatic-load-balancing.svg").default,
+ content: "Add or remove nodes and let Pulsar load balance topic bundles
automatically. Hot spotted topic bundles are automatically split and evenly
distributed across the brokers.",
},
{
title: "Serverless functions",
Svg: require("../../static/img/proven-in-production.svg").default,
- content:"Write serverless functions with developer-friendly APIs to
natively process data immediately upon arrival. No need to run your own stream
processing engine.",
+ content:"Write and deploy functions natively using Pulsar Functions.
Process messages using Java, Go, or Python without deploying fully-fledged
applications. Kubernetes runtime is bundled.",
},
{
- title: "Horizontally scalable",
+ title: "Rapid Horizontal Scalability",
Svg: require("../../static/img/horizontally-scalable.svg").default,
- content: "Expand capacity seamlessly to hundreds of nodes.",
+ content: "Scales horizontally to handle the increased load. Its unique
design and separate storage layer enable handling the sudden surge in traffic
by scaling out in seconds.",
},
{
- title: "Low latency with durability",
+ title: "Low-latency messaging and streaming",
Svg: require("../../static/img/low-latency.svg").default,
- content:"Low publish latency (< 5ms) at scale with strong durability
guarantees.",
+ content:"Acknowledge messages individually (RabbitMQ style) or cumulative
per partition (i.e., offset-like). Enables use cases such as distributed work
queues or order-preserving data streams at very large scales (hundreds of
nodes) and low latency (<5ms).",
},
{
- title: "Geo-replication",
+ title: "Seamless Geo-Replication",
Svg: require("../../static/img/geo-replication.svg").default,
- content: "Configurable replication between data centers across multiple
geographic regions.",
+ content: "Protect against complete zone outages using replication across
different geographic regions. Flexible and configurable replication strategies
across distant Pulsar Clusters. Uniquely supports automatic client failover to
healthy clusters.",
},
{
title: "Multi-tenancy",
Svg: require("../../static/img/multi-tenancy.svg").default,
- content:"Built from the ground up as a multi-tenant system. Supports
isolation, authentication, authorization, and quotas.",
+ content:"Maintain one cluster for your entire organization using tenants.
Access control across data and actions using tenant policies. Isolate specific
brokers to a tenant when maximum noisy neighbor protection is needed.",
},
{
- title: "Persistent storage",
Review Comment:
Yes, if we update the earlier section to add durable back, I think that is
sufficient.
##########
src/components/HomepageFeatures.js:
##########
@@ -4,48 +4,48 @@ import ReactMarkdown from "react-markdown";
const FeatureList = (language) => [
{
- title: "Cloud-native",
- Svg: require("../../static/img/Technology-Solution.svg").default,
- content: "A multiple layer approach separating compute from storage to
work with cloud infrastructures and Kubernetes.",
+ title: "Automatic Load Balancing",
+ Svg: require("../../static/img/automatic-load-balancing.svg").default,
+ content: "Add or remove nodes and let Pulsar load balance topic bundles
automatically. Hot spotted topic bundles are automatically split and evenly
distributed across the brokers.",
},
{
title: "Serverless functions",
Svg: require("../../static/img/proven-in-production.svg").default,
- content:"Write serverless functions with developer-friendly APIs to
natively process data immediately upon arrival. No need to run your own stream
processing engine.",
+ content:"Write and deploy functions natively using Pulsar Functions.
Process messages using Java, Go, or Python without deploying fully-fledged
applications. Kubernetes runtime is bundled.",
},
{
- title: "Horizontally scalable",
+ title: "Rapid Horizontal Scalability",
Svg: require("../../static/img/horizontally-scalable.svg").default,
- content: "Expand capacity seamlessly to hundreds of nodes.",
+ content: "Scales horizontally to handle the increased load. Its unique
design and separate storage layer enable handling the sudden surge in traffic
by scaling out in seconds.",
},
{
- title: "Low latency with durability",
+ title: "Low-latency messaging and streaming",
Review Comment:
Thanks for revisiting this. I think adding durability back takes care of my
concerns.
##########
src/components/HomepageFeatures.js:
##########
@@ -4,48 +4,48 @@ import ReactMarkdown from "react-markdown";
const FeatureList = (language) => [
{
- title: "Cloud-native",
- Svg: require("../../static/img/Technology-Solution.svg").default,
- content: "A multiple layer approach separating compute from storage to
work with cloud infrastructures and Kubernetes.",
+ title: "Automatic Load Balancing",
+ Svg: require("../../static/img/automatic-load-balancing.svg").default,
+ content: "Add or remove nodes and let Pulsar load balance topic bundles
automatically. Hot spotted topic bundles are automatically split and evenly
distributed across the brokers.",
},
{
title: "Serverless functions",
Svg: require("../../static/img/proven-in-production.svg").default,
- content:"Write serverless functions with developer-friendly APIs to
natively process data immediately upon arrival. No need to run your own stream
processing engine.",
+ content:"Write and deploy functions natively using Pulsar Functions.
Process messages using Java, Go, or Python without deploying fully-fledged
applications. Kubernetes runtime is bundled.",
},
{
- title: "Horizontally scalable",
+ title: "Rapid Horizontal Scalability",
Svg: require("../../static/img/horizontally-scalable.svg").default,
- content: "Expand capacity seamlessly to hundreds of nodes.",
+ content: "Scales horizontally to handle the increased load. Its unique
design and separate storage layer enable handling the sudden surge in traffic
by scaling out in seconds.",
},
{
- title: "Low latency with durability",
+ title: "Low-latency messaging and streaming",
Svg: require("../../static/img/low-latency.svg").default,
- content:"Low publish latency (< 5ms) at scale with strong durability
guarantees.",
+ content:"Acknowledge messages individually (RabbitMQ style) or cumulative
per partition (i.e., offset-like). Enables use cases such as distributed work
queues or order-preserving data streams at very large scales (hundreds of
nodes) and low latency (<5ms).",
},
{
- title: "Geo-replication",
+ title: "Seamless Geo-Replication",
Svg: require("../../static/img/geo-replication.svg").default,
- content: "Configurable replication between data centers across multiple
geographic regions.",
+ content: "Protect against complete zone outages using replication across
different geographic regions. Flexible and configurable replication strategies
across distant Pulsar Clusters. Uniquely supports automatic client failover to
healthy clusters.",
},
{
title: "Multi-tenancy",
Svg: require("../../static/img/multi-tenancy.svg").default,
- content:"Built from the ground up as a multi-tenant system. Supports
isolation, authentication, authorization, and quotas.",
+ content:"Maintain one cluster for your entire organization using tenants.
Access control across data and actions using tenant policies. Isolate specific
brokers to a tenant when maximum noisy neighbor protection is needed.",
Review Comment:
Is it worth mentioning that Pulsar supports multiple authentication
frameworks?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]