The Dapr extension for AKS and Arc-enabled Kubernetes now supports Dapr v1.14.4.
Dapr is a developer framework for building cloud-native applications, making it easier to run multiple microservices on Kubernetes and interact with external state stores/databases, secret stores, pub/sub brokers, and other cloud services and self-hosted solutions.
The Dapr v1.14 release offers several new features, including a new Jobs API for scheduling and running jobs, a new Scheduler control plane service, streaming subscriptions, actor multi-tenancy with namespaces, outbox pattern projections, HTTP metrics path matching, many fixes in the core runtime and components, and more.
Review the level of support provided to the Dapr extension.
Highlights
The v1.14 release includes several significant highlights:
Outbox message projections (stable)
The now-stable transactional outbox feature allows you to commit a single transaction across a large combination of pub/sub brokers and databases.
Service invocation for non-Dapr endpoints (stable)
The ability to invoke non-Dapr endpoints using the Dapr Service Invocation API is now stable.
Jobs API and Scheduler service (preview)
Many applications require job scheduling for scenarios including automated database backups, regular Data Processing and ETL, email notifications, maintenance tasks, system updates, and batch processing. The new jobs API is an orchestrator for scheduling these future jobs, either at a specific time or for a specific interval.
Scheduler service (preview)
The Scheduler service is a new control plane service used to schedule jobs, running in self-hosted mode or on Kubernetes. Install using the Dapr CLI for managing the scheduled jobs.
Increased throughput and scalability for actors and workflows (preview)
You can use the new Scheduler service as the backend for actor reminders, enabling increased throughput and lower latency for both actors and workflows. Simply enable the preview service in a Dapr Configuration resource like this:
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
name: featureconfig
spec:
features:
- name: SchedulerReminders
enabled: true
Note: Old reminder data will not be compatible with the scheduler service.
Streaming subscriptions (preview)
Streaming subscriptions are a new type of dynamic subscription written in code. Streaming subscriptions allow for adding or removing subscriptions at runtime. They do not require:
- A subscription HTTP endpoint in your application (typically required by the current programmatic and declarative subscriptions), making them easy to configure in code.
- An app to be configured with the sidecar to receive messages.
Actor multi-tenancy with namespacing
Namespacing in Dapr provides isolation, and thus multi-tenancy. With actor namespacing, the same actor type can be deployed into different namespaces. You can then call instances of these actors within the same namespace.
Note: Each namespaced actor deployment must use its own separate state store, especially if the same actor type is used across namespaces.
HTTP metrics filtering with path matching
When invoking Dapr using HTTP, metrics are created for each requested method by default and can include error rates, latency, and throughput numbers. This can result in high cardinality, which can impact memory usage and CPU.
HTTP metric path matching allows you to manage and control the cardinality of HTTP metrics in Dapr. Rather than having a metric for each event, you can reduce the number of metrics events and report an overall number.
Dapr Shared
Although not part of the Dapr runtime v1.14 release, Dapr Shared provides alternative deployment choices for Dapr. By default, Dapr is injected as a sidecar
in your application to provide best availability and reliability for the Dapr APIs. Dapr Shared enables two alternative deployment strategies to reduce resource usage in a cluster and provide a simpler test environment:
- Using a Kubernetes Daemonset for a per-node deployment
- Using a Deployment for a per-cluster deployment.
Features & component updates
Many feature and component statuses have been updated in this release. See the full list in the release notes.